MATLAB仿真技术.docx
《MATLAB仿真技术.docx》由会员分享,可在线阅读,更多相关《MATLAB仿真技术.docx(19页珍藏版)》请在冰点文库上搜索。
MATLAB仿真技术
MATLAB仿真技术
作
业
合
集
第1章习题
5.利用直接输入法和矩阵编辑器创建矩阵A=
。
解:
⑴利用直接输入法输入程序
A=[135;246]
按Enter键后,屏幕显示
A=135
246
⑵用矩阵编辑器创建矩阵,如图1.1所示。
图1.1MATLAB编辑器
7.用矩阵编辑器创建矩阵a,使a具有如下矩阵形式。
a=
a=
a=
a=
a=
解:
用矩阵编辑器创建矩阵a的过程如图1.2、1.3、1.4、1.5、1.6所示。
图1.2图1.3
图1.4图1.5
图1.6
9.已知矩阵B=
,试:
①提取矩阵B的第一行和第二行的第2、4、5个元素组成新矩阵
;②提取矩阵B的第三行和第一行的全部元素组成新矩阵
;③使矩阵B的第一行和第三行的第2;4个元素为0;④标出矩阵B的第一行中小于5的元素。
解:
①如上题,用矩阵编辑器生成矩阵B,再输入程序
B1=B([1,2],[2,4,5])
按Enter键后,屏幕显示
B1=0015
51416
②输入程序
B2=B([1,3],:
)
按Enter键后,屏幕显示
B2=1701015
4013022
③第一行和第三行的第2;4个元素原本就为0。
④输入程序如下
C=B(1,:
)<5;%将B矩阵第一行中小于5的值标记为1
D=B(1,C)%去B矩阵第一行中标为1的元素
按Enter键后,屏幕显示
D=010
11.已知矩阵a为4阶魔方阵,令a+3赋值给b,a+b赋值给c,求b和c。
解:
程序如下。
>>a=magic(4)%建立4阶魔方矩阵
a=162313
511108
97612
414151
>>b=a+3%将a中各元素加3
b=195616
8141311
1210915
717184
>>c=a+b%将a,b中对应元素相加
c=357929
13252319
21171527
1131335
13.已知A为3×3的均匀分布随机矩阵,B为3×2的均匀分布随机矩阵,C为2×3的均匀分布随机矩阵,求Q=C
A^2
B。
解:
程序如下。
>>A=rand(3,3)%A为3×3的均匀分布随机矩阵
A=664/815717/785408/1465
1298/14331493/23611324/2421
751/5914694/7115338/353
>>B=rand(3,2)%B为3×2的均匀分布随机矩阵
B=687/712581/607
589/3737614/1265
6271/64611142/1427
>>C=rand(2,3)%C为2×3的均匀分布随机矩阵
C=689/48561065/11631966/2049
407/96561/773581/5461
>>Q1=C*A^2*B
Q1=1444/3576485/1544
1263/311699/163
15.指出下列矩阵函数所实现的具体运算。
⑴A=rand(5);⑵B=rank(A);⑶C=eig(A);⑷D=sqrtm(A);⑸E=det(A)
解:
⑴A=rand(5)建立5x5的均匀分布随机矩阵;
⑵B=rank(A)求A矩阵的秩;
⑶C=eig(A)是求的A矩阵的全部特征值;
⑷D=sqrtm(A)是按矩阵乘法的方式对A矩阵开平方根;
⑸E=det(A)是求矩阵A的行列式。
17.利用MATLAB的roots函数求ƒ(x)=
+4
+10
+16
+17
+12=0的根。
解:
程序运行如下
>>p=[1,4,10,16,17,12]
p=1410161712
>>x=roots(p)
x=-1.6506
-1.0000+1.4142i
-1.0000-1.4142i
-0.1747+1.5469i
-0.1747-1.5469i
19.画出一个幅度为2、频率为4Hz、相位为
的正弦信号。
解:
程序如下
>>A=2;
>>phi=pi/3;
>>omega=2*pi/12;
>>n=-10:
10;
>>x=A*sin(omega*n+phi);
>>stem(n,x,'fill');
>>gridon;
运行结果如图1.7所示。
图1.7离散正弦信号图
第2章习题
1.系统的微分方程为
(t)=-4
(t)+2
(t),其中
(t)是幅度为1、角频率为1rad/s的方波输入信号,试建立系统的Simulink模型并进行仿真。
解:
利用模块库中的模块建立系统模型,如图2.1所示。
图2.1求解微分方程的模型
在Scope窗口中看到仿真曲线如图2.2所示。
图2.2仿真结果
3.某单位反馈控制系统如图2.3(a)所示,引人反馈如图2.3(b)所示。
Y
F
YF
___
(a)控制系统结构图(b)引人反馈后的控制系统结构图
图2.3
(1)在Simulink环境下构建原始系统的结构图,输入阶跃信号,进行仿真,并对结果进行分析。
(2)在原系统中引人比例反馈,在Simulink环境下构建引人比例反馈后的系统结构图,进行仿真,并对结果进行分析。
解:
(1)在Simulink环境下构建原始系统的结构图如图2.4所示,仿真结果如图2.5所示。
图2.4仿真模型
图2.5仿真结果
(2)在Simulink环境下构建引人比例反馈后的系统结构图如图2.6所示,仿真结果如图2.7所示。
图2.6仿真模型
图2.7仿真结果
5.使用Simulink仿真求下列系统的单位脉冲响应(Simulink中没有单位冲激信号模块,所以要利用阶跃信号模块经微分来产生)。
(1)H(s)=
(2)H(s)=
解:
(1)建立的系统仿真模型如图2.8所示,仿真结果如图2.9所示。
图2.8系统仿真模型
图2.9仿真结果
(2)建立的系统仿真模型如图2.10所示,仿真结果如图2.11所示。
图2.10系统仿真模型
图2.11仿真结果
第3章习题
2.利用信号处理模块库中的模块,构造并仿真信号:
ƒ(n)=
(n)+2u(n-1)-
(n-3)
解:
图3.1仿真框图
选择模块搭建好的模型如图3.1所示。
接着设置各个模块的参数,Discrete
Impulse模块参数如图3.2所示,DiscreteImpulse1模块参数如图3.3所示,
Buffer中OutputBufferSize设置为20,Gain模块Gain参数设为-1,Constant模块中ConstantValue设为2,Delay模块中Delay参数设为1。
仿真结果如图3.4所示。
图3.2DiscreteImpulse模块参数
图3.3DiscreteImpulse1模块参数
图3.4仿真结果
5.设计一个巴特沃斯数字低通滤波器,使其满足:
通带截止频率为0.4π,通带波纹小于0.5dB;阻带截止频率为06π,阻带最小衰减为50dB,试用FDAtool设计该数字滤波器,并生成脉冲响应曲线和频率响应曲线。
解:
按3.5图设计滤波器参数。
图13.5滤波器设计界面
点击Impulse选项得到冲激响应曲线如图3.6所示。
图3.6冲激响应
频率响应曲线如图3.7所示。
图3.7幅频特性和相频特性
12.自行录入一段语言信号,并对其做4倍抽取运算,观测抽取前与抽取后的频谱变化。
解:
选择模块构造仿真框图如图3.8所示。
图3.8仿真模型框图
在matlab工作空间输入命令
[x,fs]=wavread('E:
\yinyue\xuyong.wav');
设置各个模块参数。
Buffer模块参数如图3.9所示。
Signalfromworkspace参数如图3.10所示。
图3.9Buffer参数设置
图3.10Signalfromworkspace参数设置
仿真结果如下:
图3.11仿真前
图3.12仿真后
第4章习题
2.对四进制差分相移键控(DPSK)通信系统进行建模和蒙特卡罗仿真。
解:
程序如下:
clearall;
SNRindB1=0:
2:
12;
SNRindB2=0:
0.1:
12;
fori=1:
length(SNRindB1)
simu_err_prb(i)=snr2ps(SNRindB1(i));%仿真误码率
end
fori=1:
length(SNRindB2)
SNR=exp(SNRindB2(i)*log(10)/10);
theo_err_prb(i)=2*qfunc(sqrt(SNR));
end
semilogy(SNRindB1,simu_err_prb,'*');
holdon;
semilogy(SNRindB2,theo_err_prb);
xlabel('Eb/N0(dB)');
ylabel('误码率');
legend('仿真符号误码率','理论符号误码率');
function[p]=snr2ps(snr_in_dB)
N=10000;
Es=1;
snr=10^(snr_in_dB/10);
sigma=sqrt(Es/(4*snr));
fori=1:
2*N
temp=rand;
if(temp<0.5)
dsource(i)=0;
else
dsource(i)=1;
end
end
mapping=[0132];
M=4;
[diff_enc_output]=cm_dpske(Es,M,mapping,dsource);
fori=1:
N
[n
(1)n
(2)]=gausamp(sigma);
r(i,:
)=diff_enc_output(i,:
)+n;
end
numoferr=0;
prev_theta=0;
fori=1:
N
theta=angle(r(i,1)+j*r(i,2));
delta_theta=mod(theta-prev_theta,2*pi);
if((delta_theta7*pi/4))
decis=[00];
elseif(delta_theta<3*pi/4)
decis=[01];
elseif(delta_theta<5*pi/4)
decis=[11];
else
decis=[10];
end
prev_theta=theta;
if((decis
(1)~=dsource(2*i-1))|(decis
(2)~=dsource(2*i)))
numoferr=numoferr+1;
end
end
p=numoferr/N;
end
function[enc_comp]=cm_dpske(E,M,mapping,sequence)
k=log2(M);
N=length(sequence);
remainder=rem(N,k);
if(remainder~=0)
fori=N+1:
N+k-remainder
sequence(i)=0;
end
N=N+k-remainder;
end
theta=0;
fori=1:
k:
N
index=0;
forj=i:
i+k-1
index=2*index+sequence(j);
end
index=index+1;
theta=mod(2*pi*mapping(index)/M+theta,2*pi);
enc_comp((i+k-1)/k,1)=sqrt(E)*cos(theta);
enc_comp((i+k-1)/k,2)=sqrt(E)*sin(theta);
end
function[y1y2]=gausamp(sigma)
y1=sigma*randn
(1);
y2=sigma*randn
(1);
end
运行结果如图4.1所示。
图4.1运行结果