Matlab程序设计实验5数据分析和多项式计算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MATLAB程序设计实验5 数据分析和多项式计算

班级:电信1105

姓名:

学号:*********

一.实验目的

1.掌握数据统计和分析的方法。

2.掌握数值插值与曲线拟合的方法和应用。

3.掌握快速傅立叶变换的应用方法。

4.掌握多项式的常用运算

二.实验内容

1.利用randn函数生成符合正态分布的10x5随机矩阵,进行以下操作:

a)矩阵中各列元素的均值和标准方差。

b)矩阵的最大元素和最小元素。

c)求矩阵每行元素的和以及全部元素之和。

d)分别对矩阵的每列元素按照升序、每列元素按照降序排列。

X=randn(10,5);

%a

X_mean=mean(X)%求随机矩阵X各列的平均值

X_std=std(X,0,1)%求随机矩阵X各列的标准方差

%b

X_max=max(X)%求每列最大值

X_min=min(X)%求每列最小值

%c

X_sum=sum(X,2)%按行求和

X_sumall=sum(sum(X))%全部值求和

%d

X_sort=sort(X)%按列升序

X_sort1=sort(X,2,'descend')%按行降序

2.

a)对表1使用3次样条插值计算0~90度内整数点的正弦值,0~75度内整数点的正

切值。

b)对表1使用5次多项式拟合方法计算0~90度内整数点的正弦值,0~75度内整数

点的正切值。

c)对a)和b)的相应计算结果进行比较,绘出两种方法的误差曲线。

表1

%a 3次样条插值

disp('3次样条插值')

x1=0:0.1:pi/2;

y1=sin(x1);

y1_0=interp1(x1,y1,0,'spline')

y1_15=interp1(x1,y1,pi/12,'spline')

y1_30=interp1(x1,y1,pi/6,'spline')

y1_45=interp1(x1,y1,pi/4,'spline')

y1_60=interp1(x1,y1,pi/3,'spline')

y1_75=interp1(x1,y1,5*pi/12,'spline')

y1_90=interp1(x1,y1,pi/2,'spline')

y2=tan(x1);

y2_0=interp1(x1,y2,0,'spline')

y2_15=interp1(x1,y2,pi/12,'spline')

y2_30=interp1(x1,y2,pi/6,'spline')

y2_45=interp1(x1,y2,pi/4,'spline')

y2_60=interp1(x1,y2,pi/3,'spline')

y2_75=interp1(x1,y2,5*pi/12,'spline')

%b 5次多项式拟合

disp('5次多项式拟合')

x2=0:pi/12:pi/2;

y=[0 0.2588 0.5000 0.7071 0.8660 0.9659 1.0000]; y1=polyfit(x2,y,5)

x3=0:pi/12:5*pi/12;

ya=[0 0.2679 0.5774 1.0000 1.7320 3.7320];

y2=polyfit(x3,ya,5)

%c 误差曲线

a_sin=[y1_0 y1_15 y1_30 y1_45 y1_60 y1_75 y1_90]-y a_tan=[y2_0 y2_15 y2_30 y2_45 y2_60 y2_75]-ya; subplot(2,1,1);

plot(x2,a_sin,'-*');

title('a_sin');

axis([0,pi/2,-0.39* 1.0e-004,0.28* 1.0e-004]); subplot(2,1,2);

plot(x3,a_tan,'-o');

title('a_tan');

axis([0,5*pi/12,-0.026,0.003]);

xc=0:0.1:pi/2;

yc_sin=polyval(y1,xc)-sin(xc);

xc1=0:0.1:5*pi/12;

yc_tan=polyval(y2,xc1)-tan(xc1);

subplot(2,1,1);

plot(xc,yc_sin,'-*');

title('yc_sin');

axis([0,pi/2,-0.33* 1.0e-004,0.04* 1.0e-004]); subplot(2,1,2); plot(xc1,yc_tan,'-o'); title('yc_tan');

axis([0,5*pi/12,-0.01,0.062]);

3. 已知(),0t

h t e t -=≥,取点数N=64,对t 从0~5秒进行采样,用FFT 做快速傅立叶

变换,并绘制相应的振幅-频率图。

N=64; T=5;

t=linspace(0,T,N); x=exp(-t); dt=t(2)-t(1); f=1/dt; X=fft(x); F=X(1:N/2+1); f=f*(0:N/2)/N; plot(f,abs(F),'-*') xlabel('Frequency');

相关文档
最新文档