文档库 最新最全的文档下载
当前位置:文档库 › 《MATLAB语言及应用》期末大作业题目与解答

《MATLAB语言及应用》期末大作业题目与解答

《MATLAB语言及应用》期末大作业

题目

1.数组的创建和访问(20分,每小题2分):

1)利用randn函数生成均值为1,方差为4的5*5矩阵A;

2)将矩阵A按列拉长得到矩阵B;

3)提取矩阵A的第2行、第3行、第2列和第4列元素组成2*2的矩阵C;

4)寻找矩阵A中大于0的元素;]

5)求矩阵A的转置矩阵D;

6)对矩阵A进行上下对称交换后进行左右对称交换得到矩阵E;

7)删除矩阵A的第2列和第4列得到矩阵F;

8)求矩阵A的特政值和特征向量;

9)求矩阵A的每一列的和值;

10)求矩阵A的每一列的平均值;

程序代码:

clear;

clc;

A=1+sqrt(4)*randn(5) %生成均值为1,方差为4的5*5矩阵A;

B=A(:) %将矩阵A按列拉长得到矩阵B;

C=A([2 3],[2 4]) %提取矩阵A的第2行、第3行、第2列和第4列元素组

成2*2的矩阵C;

n=find(A>0) %寻找矩阵A中大于0的元素;

x=A(n)

D=A' %求矩阵A的转置矩阵D;

E1=flipud(A); %对矩阵A进行上下对称交换后进行左右对称交换得到矩

阵E;

E=fliplr(E1)

F=A(:,[1 3 5]) %删除矩阵A的第2列和第4列得到矩阵F;

[Av,Ad]=eig(A) %求矩阵A的特征值和特征向量;

S=sum(A,1) %求矩阵A的每一列的和值;

Avg=S/5 %求矩阵A的每一列的平均值;

运行结果:

A =

2.3333 2.1171 0.8568 2.1971 -0.7526

-1.7853 0.4453 -3.8292 1.2944 0.4690

-1.6011 -1.5874 -0.3887 0.7971 0.3448

-0.2100 -0.7769 -1.7828 -4.2700 -1.3165

-1.9771 -0.9730 1.6593 1.0561 2.1601

B =

2.3333

-1.7853

-1.6011

-0.2100

-1.9771

2.1171

0.4453

-1.5874

-0.7769

-0.9730

0.8568

-3.8292

-0.3887

-1.7828

1.6593

2.1971

1.2944

0.7971

-4.2700

1.0561

-0.7526

0.4690

0.3448

-1.3165

2.1601

C =

0.4453 1.2944

-1.5874 0.7971

n =

1

6

7

11

15

16

17

18

20

22

23

25

x =

2.3333

2.1171

0.4453

0.8568

1.6593

2.1971

1.2944

0.7971

1.0561

0.4690

0.3448

2.1601

D =

2.3333 -1.7853 -1.6011 -0.2100 -1.9771

2.1171 0.4453 -1.5874 -0.7769 -0.9730

0.8568 -3.8292 -0.3887 -1.7828 1.6593

2.1971 1.2944 0.7971 -4.2700 1.0561

-0.7526 0.4690 0.3448 -1.3165 2.1601

E =

2.1601 1.0561 1.6593 -0.9730 -1.9771

-1.3165 -4.2700 -1.7828 -0.7769 -0.2100

0.3448 0.7971 -0.3887 -1.5874 -1.6011

0.4690 1.2944 -3.8292 0.4453 -1.7853

-0.7526 2.1971 0.8568 2.1171 2.3333

F =

2.3333 0.8568 -0.7526

-1.7853 -3.8292 0.4690

-1.6011 -0.3887 0.3448

-0.2100 -1.7828 -1.3165

-1.9771 1.6593 2.1601

Av =

Columns 1 through 4

0.1004 + 0.2832i 0.1004 - 0.2832i 0.6302 -0.5216

-0.5969 -0.5969 -0.4811 0.0856

-0.4405 + 0.0006i -0.4405 - 0.0006i -0.3078 0.2120

0.2732 - 0.4899i 0.2732 + 0.4899i 0.0244 -0.1780

-0.0617 + 0.2024i -0.0617 - 0.2024i 0.5254 0.8025 Column 5

0.3903

-0.4959

0.0218

0.1929

-0.7511

Ad =

Columns 1 through 4

-2.6239 + 1.7544i 0 0 0

0 -2.6239 - 1.7544i 0 0

0 0 -0.2434 0

0 0 0 3.5455

0 0 0 0

Column 5

0 0 0 0 2.2257 S =

-3.2403 -0.7749 -3.4846 1.0747 0.9049 Avg =

-0.6481 -0.1550 -0.6969 0.2149 0.1810

2.符号计算(10分,每小题5分):

1) 求方程组20,0uy vz w y z w ++=++=关于,y z 的解; 2) 利用dsolve 求解偏微分方程,dx dy

y x dt dt

==-的解;

程序代码:

clc

[u,v,w] = solve('u*y^2 + v*z + w = 0','y + z + w = 0','u,v,w') [x y]=dsolve('Dx=y','Dy=-x')

运行结果: u =

(-v*z+y+z)/y^2 v =

w =

-y-z

x =

-C1*cos(t)+C2*sin(t)

y =

C1*sin(t)+C2*cos(t)

3.数据和函数的可视化(20分,每小题5分):

1)二维图形绘制:绘制方程

22

22

1

25

x y

a a

+=

-

表示的一组椭圆,其中

0.5:0.5:4.5

a=;

程序代码:

clc

clear

a=0.5:0.5:4.5;

t=-2*pi:0.1:2*pi;

N=length(a);

for i=1:1:N

x=a(i)*cos(t);

y=sqrt(25-a(i).^2).*sin(t); plot(x,y)

hold on

end

运行结果:

-5

-4

-3

-2

-1

1

2

3

4

5

2) 利用plotyy 指令在同一张图上绘制sin y x =和10x y =在[0,4]x ∈上的曲线; 程序代码:

clc clear x=0:0.01:4; y1=sin(x); y2=10.^x;

plotyy(x,y1,x,y2) %用双y 轴绘制二维图形

运行结果:

4

00.51 1.52 2.53 3.5

3) 用曲面图表示函数22z x y =+; 程序代码:

clc clear

[X,Y] = meshgrid(-2:0.05:2); %产生xy 平面上的网格数据 Z = X.^2 + Y.^2;

surf(X,Y,Z) %绘着色曲面图 hold off

运行结果:

4) 用stem 函数绘制对函数cos 4y t π

=的采样序列;

程序代码:

clc clear fs=25; Ts=1/fs; n=1:1:200;

yn=cos(pi*n*Ts/4);

stem(n,yn) %绘离散数据的火柴杆图

运行结果:

4. 设采样频率为Fs = 1000 Hz ,已知原始信号为)150π2sin(2)80π2sin(t t x ?+?=,由

于某一原因,原始信号被白噪声污染,实际获得的信号为))((?t size randn x x

+=,要求设计出一个FIR 滤波器恢复出原始信号。(20分)

程序代码:

clc clear

t=0:0.001:1; %采样周期为0.001s,即采样频率为1000Hz ;

x=sin(2*pi*80*t)+2*sin(2*pi*150*t);

figure(1) subplot(2,1,1)

plot(x(1:50)),title('原始信号'); %画出时域内的信号;

X=fft(x,512); %对x进行512点的傅里叶变换;

f=1000*(0:256)/512; %设置频率轴(横轴)坐标,1000为采样频率;

subplot(2,1,2)

plot(f,X(1:257)); %画出频域内的信号;

%产生受噪声污染的正弦波信号;

x1=sin(2*pi*80*t)+2*sin(2*pi*150*t)+randn(size(t));

figure(2)

subplot(2,1,1)

plot(x1(1:50)),title('污染信号'); %画出时域内的信号;

X=fft(x1,512); %对x进行512点的傅里叶变换;

f=1000*(0:256)/512; %设置频率轴(横轴)坐标,1000为采样频率;

subplot(2,1,2)

plot(f,X(1:257)); %画出频域内的信号;

%用fdatool设计两个带通滤波器,阶数为49阶;

h1=[0.0265532359480858,0.0209562797099352,0.00929121486842632,-0. 00587770342826843,-0.0208088979125023,-0.0315154753625393,-0.0348 377823829651,-0.0293655656278133,-0.0159416478127241,0.0024199751 2057424,0.0212144404649735,0.0355709493160248,0.0415366254746914, 0.0371753238141537,0.0231728963553906,0.00276318355463445,-0.0190 315302461386,-0.0366643443703651,-0.0455069243907929,-0.043088670 8199978,-0.0297939274460077,-0.00881843268871307,0.01461733784526 59,0.0345998033881187,0.0460511706769466,0.0460511706769466,0.034 5998033881187,0.0146173378452659,-0.00881843268871307,-0.02979392 74460077,-0.0430886708199978,-0.0455069243907929,-0.0366643443703 651,-0.0190315302461386,0.00276318355463445,0.0231728963553906,0. 0371753238141537,0.0415366254746914,0.0355709493160248,0.02121444 04649735,0.00241997512057424,-0.0159416478127241,-0.0293655656278 133,-0.0348377823829651,-0.0315154753625393,-0.0208088979125023,-0.00587770342826843,0.00929121486842632,0.0209562797099352,0.0265 532359480858];

h2=[-0.00940055027604103,-0.0222037862986326,-0.0171733368188143, 0.00408544391393662,0.0249114297330380,0.0265565365552902,0.00495 034828782082,-0.0236652232706547,-0.0348288714885712,-0.016806880 0121546,0.0175826549530029,0.0398818850517273,0.0296701062470675, -0.00679892720654607,-0.0399842970073223,-0.0411570966243744,-0.0 0741533236578107,0.0342939943075180,0.0488660223782063,0.02284667 08213091,-0.0231718402355909,-0.0509836338460445,-0.0368096083402 634,0.00818933453410864,0.0467752367258072,0.0467752367258072,0.0 0818933453410864,-0.0368096083402634,-0.0509836338460445,-0.02317 184********,0.0228466708213091,0.0488660223782063,0.0342939943075 180,-0.00741533236578107,-0.0411570966243744,-0.0399842970073223,

-0.00679892720654607,0.0296701062470675,0.0398818850517273,0.0175 826549530029,-0.0168068800121546,-0.0348288714885712,-0.023665223 2706547,0.00495034828782082,0.0265565365552902,0.0249114297330380 ,0.00408544391393662,-0.0171733368188143,-0.0222037862986326,-0.0 0940055027604103];

y1=conv(x1,h1); %卷积

y=-conv(y1,h2);

Y=fft(y,512);

figure(3)

subplot(2,1,1)

plot(y(50:100)),title('恢复信号');

subplot(2,1,2)

plot(f,Y(1:257))

运行结果:

原始信号

050100150200250300350400450500

污染信号

05101520253035404550

050100150200250300350400450500

恢复信号

050100150200250300350400450500

5. 人体心电图测量信号在测量的过程中经常会受到工业高频干扰,所以必须经过低通滤波处理后,才能判断心脏功能的有用信息。下面是一组实际心电图信号采样的样本x(n),其中存在高频干扰。试在实验中,通过MATLAB程序,以x(n)作为输入序列,滤出其中的干扰成分。x(n) = {-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,8,12,12,10,6,6,4,0,0,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0}。(20分,每小题4分))

1)绘制原数据图形;

2)设计巴特沃斯低通滤波器并绘制出其幅频响应曲线;

3)用设计的滤波器对原数据进行滤波;绘制滤波后的数据图;

4)绘制原数据功率谱图;

5)绘制滤波后的数据功率谱图。

程序代码:

clc

clear

Xn=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38, -60,-84,-90,-66,-32,-4,-2,8,12,12,10,6,6,4,0,0,0,0,0,-2,-2,0,0,-2 ,-2,-2,-2,0];

N=length(Xn);

n=1:1:N;

Xk=fft(Xn);

figure(1)

subplot(2,1,1),stem(n,Xn),title('原始信号')

subplot(2,1,2),plot(abs(Xk))

%巴特沃斯低通滤波器

%

[b,a]=butter(10,0.5,'low');

figure(2)

freqz(b,a);

%

Yn=filter(b,a,Xn); %滤波

Yk=fft(Yn);

figure(3)

subplot(2,1,1),stem(n,Yn),title('恢复信号');

subplot(2,1,2),plot(abs(Yk))

fs=5000;

nfft=1024;

window=boxcar(N);

figure(4)

periodogram(Xn,window,nfft,fs); %求Xn的数据功率谱图

figure(5)

periodogram(Yn,window,nfft,fs); %求Yn的数据功率谱图

运行结果:

05101520253035404550

0510152025

3035404550

图1. 原数据图形

00.10.2

0.30.40.50.60.70.80.91

Normalized Frequency (?π rad/sample)

P h a s e (d e g r e e s )

0.1

0.2

0.30.40.50.60.70.80.9

1

Normalized Frequency (?π rad/sample)

M a g n i t u d e (d B )

图2. 幅频响应曲线

05101520253035404550

051015

20253035404550

图3. 滤波后的数据图

00.5

1 1.5

2 2.5

Frequency (kHz)

P o w e r /f r e q u e n c y (d B /H z )

Periodogram Power Spectral Density Estimate

图4. 原数据功率谱图

00.5

1 1.5

2 2.5

Frequency (kHz)

P o w e r /f r e q u e n c y (d B /H z )

Periodogram Power Spectral Density Estimate

图5. 滤波后的数据功率谱图

6.已知x(n)=[2 1 0 1],计算如下表达式:(10分)

1) 计算()x n 的6点DFT 结果()X k ;

2) 已知()()36k Y k W X k =,求()()y n IDFT x n =????; 3) 已知()()Re W k X k =????,求()()w n IDFT X k =????; 4) 已知()()2Q k X k =,求()q n ; 5) 已知()z k =()2X k ,求()z n ; 程序代码:

clear clc N=6; n=0:1:N-1; xn=[2 1 0 1 ]; m=length(xn);

xn1=[xn zeros(1,N-m)]; k=0:1:N-1;

WN1=exp(-j*2*pi/N); nk=n'*k; WNnk1=WN1.^nk; Xk=xn1*WNnk1 %figure(1) %subplot(2,1,1)

%stem(n,xn1);

%subplot(2,1,2)

%stem(k,abs(Xk));

Yk=Xk.*exp(-j*2*pi*3*k/N)

%Yk=exp(-j*2*pi*3*k/N).*Xk

WN2=exp(j*2*pi/N);

WNnk2=WN2.^nk;

yn=Yk*WNnk2/N

Wk=real(Xk);

wn=Wk*WNnk2/N

Qk(1:N/2)=Xk(2*(1:N/2)-1);

Qk1=[Qk zeros(1,N-length(Qk))];

qn=Qk1*WNnk2/N

Zk=Xk.^2;

zn=Zk*WNnk2/N

运行结果:

Xk =

Columns 1 through 5

4.0000 1.5000 - 0.8660i 2.5000 - 0.8660i -0.0000 - 0.0000i 2.5000 + 0.8660i

Column 6

1.5000 + 0.8660i

Yk =

Columns 1 through 5

4.0000 -1.5000 + 0.8660i 2.5000 - 0.8660i 0.0000 + 0.0000i 2.5000 + 0.8660i

Column 6

-1.5000 - 0.8660i

yn =

Columns 1 through 5

1.0000 + 0.0000i 0.0000 - 0.0000i -0.0000 + 0.0000i

2.0000 - 0.0000i 1.0000 - 0.0000i

Column 6

-0.0000 + 0.0000i

wn =

Columns 1 through 5

2.0000 0.5000 + 0.0000i -0.0000 + 0.0000i 1.0000 - 0.0000i -0.0000 + 0.0000i

Column 6

0.5000 + 0.0000i

qn =

Columns 1 through 5

1.5000 + 0.0000i 0.6667 + 0.5774i 0.5000 - 0.0000i 0.6667 + 0.2887i -0.0000 + 0.0000i

Column 6

0.6667 - 0.8660i

zn =

Columns 1 through 5

5.0000 + 0.0000i 4.0000 - 0.0000i 1.0000 + 0.0000i 4.0000 + 0.0000i 2.0000 + 0.0000i

Column 6

0.0000 + 0.0000i

相关文档
相关文档 最新文档