matlab复习题及答案1

更新时间:2024-04-08 07:16:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

0.2s2?0.3s?1H?s??2s?0.4s?1,1. 已知模拟滤波器的传递函数为求其频率特性。

并画出频率特征曲线。

B=[0.2 0.3 1];A=[1 0.4 1]; w=linspace(0,10); BB=polyval(B, j*w); AA=polyval(A, j*w); subplot(2,2,1); plot(w,abs(BB ./ AA)); title('·ù?èì?D?'); subplot(2,2,3);

plot(w,angle(BB ./ AA)); title('?à??ì?D?');

0.2?0.3z?1?z?2H?z??z?2?0.4z?1?1,取采样点数为128点,求其频2、数字滤波器

率特性,并画出曲线特性。

B=[0.2 0.3 1];A=[1 0.4 1]; w=linspace(0,10); BB=polyval(B, exp(j*w)); AA=polyval(A, exp(j*w)); subplot(2,2,1);

plot(w,abs(BB ./ AA));title(' '); subplot(2,2,3);

plot(w,angle(BB ./ AA));title(' ');

3. 已知信号的波形,画出如图所示,画出f(t?2),f(?3t?2),f(?t?2),

f(3t)的波形;

t0=-10;t1=10;dt=0.01; t=t0:dt:t1;

e=u(t)-u(t-3);%???Dμ?u(t)?íê?μ¥???×??oˉêy£??±?óμ÷ó?ò??¨ò?μ?μ¥????oˉêyM???t?× %figure(1), subplot(321),

plot(t,e);title('f(t)D?o?2¨D?');axis([-1 6 -1 1.5]); e1=u(t-2)-u(t-5); %figure(2),

subplot(322),plot(t,e1);title('f(t-2) ');axis([-1 6 -1 1.5]); e2=u(-3*t-2)-u(-3*t-5); %figure(3),

subplot(323),plot(t,e2);title('f(3t-2) ');axis([-4 2 -1 1.5]); e3=u(-t-2)-u(-t-5);

subplot(324),plot(t,e3);title('f(-t-2) ');axis([-6 2 -1 1.5]); e4=u(3*t)-u(3*t-3);

subplot(325),plot(t,e4);title('f(3t) ');axis([-6 2 -1 1.5]);

4. 已知f1?sin??t?,f2?sin?8?t?,使用命令画出两个信号及两个信号

乘积的波形图,其中,

dt=0.01;t=-1:dt:1; Omega=2*pi; f1=sin(Omega*t); f2=sin(8*Omega*t); f=conv(f1,f2); t1=-1:0.001:2.2;

f???1Hz2?。

subplot(311),plot(t,f1);title(' ');axis([-1 1 -1.5 1.5]); subplot(312),plot(t,f2);title( );axis([-1 1 -1.5 1.5]);

subplot(313),plot(f);title(' (t*dt)');axis([-1 220 -2.5 2.5]);

用matlab命令绘图出下列信号的卷积积分f1?t??f2?t?的时域波形图。

clear all;close all;clc; dt=0.001;t=-0.5:dt:4; f1=u(t)-u(t-2);

f2=(u(t)-u(t-1))+2*(u(t-1)-u(t-2))+u(t-2)-u(t-3); f=0.001*conv(f1,f2);

subplot(311),plot(t,f1);title('f1D?o?');axis([0 3.2 0 1.5]); subplot(312),plot(t,f2);title('f2D?o?');axis([0 3.2 0 2.5]); subplot(313),plot(f);title('fD?o?,êμ?ê?ì?èó|?a(t*dt)');axis([0 6000 -0.5 3.5]);

.给出如下差分方程:y?n??y?n?1??0.9y?n?2??x?n?;?n

(1)计算并画出脉冲响应h?n?,n??20,?,100。 (2)计算并画出阶跃响应s?n?,n??20,?,100。 (3)由此

h?n?规定的系统是否稳定?

clear all;close all;clc; b=[1];a=[1,-1,0.9]; x=impseq(0,-20,120); n=[-20:120]; h=filter(b,a,x); subplot(211);stem(n,h); axis([-20,120,-1.1,1.1]);

title('??3??ìó|');xlabel('n');ylabel('h(n)'); x=stepseq(0,-20,120); s=filter(b,a,x); subplot(212);stem(n,s); axis([-20,120,-0.5,2.5]);

title('?×???ìó|');xlabel('n');ylabel('s(n)'); I=sum(abs(h)); z=roots(a);

magz=abs(z);%????3?à′μ??μ?ùD?óú1£?òò′????μí3ê??è?¨μ??£ function [x,n]=impseq(n0,n1,n2) n=[n1:n2];x=[(n-n0)==0]; function [x,n]=stepseq(n0,n1,n2) n=[n1:n2];x=[(n-n0)>=0];

7、已知输入的信号是有限序列x?n??u?n??u?n?10?,而脉冲响应式无限序列:h?n???0.9?u?n?,求y?n??x?n??h?n?。请用matlab编写程序

n将输入序列,输出序列画出。

clear all;close all;clc; b=[1];a=[1,-0.9];

n=-5:50;x=stepseq(0,-5,50)-stepseq(10,-5,50); x=u(n)-u(n-10); h=0.9.^n.*u(n);

subplot(311);stem(n,x);axis([-10,50,-0.5,2]); title('输入序列');xlabel('n');ylabel('x(n)'); subplot(312);stem(n,h);axis([-10,50,-0.5,2]); title('脉冲响应无限序列');xlabel('n');ylabel('h(n)'); h=filter(b,a,x);

subplot(313);stem(n,h);axis([-10,50,-0.5,8]); title('输出序列');xlabel('n');ylabel('y(n)'); function f=u(n); f=(n>=0);

function [x,n]=impseq(n0,n1,n2) n=[n1:n2];x=[(n-n0)==0]; function [x,n]=stepseq(n0,n1,n2) n=[n1:n2];x=[(n-n0)>=0];

n????xn?0.5u?n?的离散傅里叶变??0,?8、将分为501个等间隔的点,计算

jwXe换

??并画出其模、相角、实部、虚部的曲线。

clear all;close all;clc;

w=[0:1:500]*pi/500;%将[0,pi]区域分为501个点 X=exp(j*w)./(exp(j*w)-0.5*ones(1,501)); magX=abs(X);angX=angle(X); realX=real(X);imagX=imag(X); subplot(221);plot(w/pi,magX);grid

title('幅度部分');xlabel('以pi为单位的频率');ylabel('幅度'); subplot(223);plot(w/pi,angX);grid

title('相角部分');xlabel('以pi为单位的频率');ylabel('相角'); subplot(222);plot(w/pi,realX);grid

title('实部');xlabel('以pi为单位的频率');ylabel('实部'); subplot(224);plot(w/pi,imagX);grid

title('虚部');xlabel('以pi为单位的频率');ylabel('虚部');

9、已知其传递函数为H?s??(1)用

4s。

s3?3s2?6s?4S函数编程对一个连续线性时不变系统进行仿真;

(2)请自己建立子系统来实现该系统仿真;

(3)请用Simulink模块库中提供的传递函数模块对该系统进行仿真。

function [sys,x0,str,ts] =ans9a(t,x,u,flag) % á?D??μí3×′ì?·?3ì; % x'=Ax+Bu % y =Cx+Du % ?¨ò?A,B,C,D???ó A=[0 1 0;0 0 1;-4 -6 -3]; B=[0;0;1]; C=[0 4 0]; D=0; switch flag,

case 0 % flag=0 3?ê??ˉ

[sys,x0,str,ts]=mdlInitializeSizes(A,B,C,D); % ?é??A,B,C,D???ó?íè?3?ê??ˉoˉêy

case 1 % flag=1 ????á?D??μí3×′ì?·?3ì(μ?êy) sys=mdlDerivatives(t,x,u,A,B,C,D); case 3 % flag=3 ????ê?3? sys=mdlOutputs(t,x,u,A,B,C,D); case { 2, 4, 9 } % ????×÷2?′|àíμ?flag sys=[]; % ?Tó?μ?flagê±·μ??sys?a?????ó otherwise % òì3£′|àí

error(['Unhandled flag = ',num2str(flag)]); end

% ?÷oˉêy?áê?

% ×óoˉêyêμ??£¨1£?3?ê??ˉoˉêy---------------------------------- function [sys,x0,str,ts] = mdlInitializeSizes(A,B,C,D) % sizes = simsizes; % ??è?

sizes.NumContStates = 3; % á?D??μí3μ?×′ì?êy?a3

sizes.NumDiscStates = 0; % à?é¢?μí3μ?×′ì?êy£???óú±??μí3′????é2?ó? sizes.NumOutputs = 1; % ê?3?D?o?êy??ê?1 sizes.NumInputs = 1; % ê?è?D?o?êy??ê?1 sizes.DirFeedthrough = 0; % òò?a???μí32?ê??±í¨μ? sizes.NumSampleTimes = 1; % ?aà?±?D??a1 sys = simsizes(sizes);

str = []; % í¨3£?a?????ó

x0 = [0;0;0]; % 3?ê?×′ì????óx0 £¨á?×′ì??é??£? ts = [0 0]; % ±íê?á?D?è??ùê±??μ?·??? % 3?ê??ˉoˉêy?áê?

% ×óoˉêyêμ??£¨2£??μí3×′ì?·?3ìoˉêy----------------------------- function sys=mdlDerivatives(t,x,u,A,B,C,D) % ?μí3×′ì?·?3ìoˉêy sys = A*x+B*u ; % ?aà?D′è??μí3μ?×′ì?·?3ì???óD?ê??′?é % ?μí3×′ì?oˉêy?áê?

% ×óoˉêyêμ??£¨3£??μí3ê?3?·?3ìoˉêy-----------------------------

function sys = mdlOutputs(t,x,u,A,B,C,D) sys = C*x; % ?aà?D′è??μí3μ?ê?3?

10、用S函数实现一个绝对值模块,即输出信号是输入信号求绝对值的

结果,试仿真得出输出结果。

function [sys,x0,str,ts] =ans10(t,x,u,flag) switch flag, case 0

sizes = simsizes; % ??è?

sizes.NumContStates = 0; % á?D??μí3μ?×′ì?êy?a3 sizes.NumDiscStates = 0; % à?é¢?μí3μ?×′ì?êy£???óú±??μí3′????é2?ó?

sizes.NumOutputs = 1; % ê?3?D?o?êy??ê?1 sizes.NumInputs = -1; % ê?è?D?o?êy??ê?1 sizes.DirFeedthrough = 1; % òò?a???μí32?ê??±í¨μ? sizes.NumSampleTimes = 1; % ?aà?±?D??a1 sys = simsizes(sizes); str = []; % í¨3£?a?????ó

x0 = []; % 3?ê?×′ì????óx0 £¨á?×′ì??é??£? ts = [-1 0]; % ±íê?á?D?è??ùê±??μ?·??? % 3?ê??ˉoˉêy?áê? case 3 sys=abs(u); case { 2, 4, 9 }

sys=[]; % ?Tó?μ?flagê±·μ??sys?a?????ó otherwise % òì3£′|àí

error(['Unhandled flag = ',num2str(flag)]);

end

11、用Simulink建模求解非线性代数方程2exp(x)?0.5在x?1和x?0附近的解。

本文来源:https://www.bwwdw.com/article/q3rr.html

Top