Matlab程序设计实验5数据分析和多项式计算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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');