Matlab for西安电子科技大学1-2
- 格式:pdf
- 大小:1.15 MB
- 文档页数:43
MATLAB大作业班级:021131 姓名:XXX 学号:02113XXX实验一傅里叶变换一试验要求信号在传输过程中,由于受信道或环境等客观因素的影响,在接收端得到的是噪声环境下的信号。
利用FFT函数对这一信号进行傅里叶分析,确定原始有用信号的频率。
已知:采样率:fs=100MHz,有用信号频率:f0=10MHz,样本数:1024点,信噪比:S/N=5dB。
二设计思路1、根据已知条件产生一个有用信号2、根据已知的信噪比产生一个高斯噪声3、将产生的有用信号和高斯噪声叠加,将此信号视为被噪声污染的信号4、调用FFT函数对被噪声污染的信号进行快速傅里叶变换5、对比图象并结合已知条件,得出原始有用信号的频率设计思路如下图:三程序代码clear allclose allclcfs=100e6; %采样率fs=100Mhzf0=10e6; %有用信号频率f0=10MhzN=1024; %样本数N=1024n=0:N-1;t=[0:N-1]/fs; %时间序列input=2*sin(2*pi*f0*t)+sin(2*pi*f0*t)-1; %输入信号subplot(2,2,1),plot(t,input); %有用信号随时间变化的输振幅xlabel('时间');ylabel('振幅');title('输入信号');grid on;am=2; %有用信号的最大幅度p=10^(5/20); %信噪比:S/N=5dBb=am/10^(p/20); %b为噪声信号最大幅度,p=20*log10(am/b)noise=b*randn(1,N); %高斯噪声信号subplot(2,2,2),plot(t,noise); %绘出随时间变化的噪声信号的振幅xlabel('时间');ylabel('振幅');title('噪声信号');grid on;sig=input+noise; %被噪音污染的信号subplot(2,2,3),plot(t,sig); %绘出随时间变化的被噪声信号污染后的信号的振幅xlabel('时间');ylabel('振幅');title('被噪声信号污染后的信号');grid on;y=fft(sig,N); %对被噪声信号污染后的信号进行快速傅里叶变换mag=abs(y); %求得傅里叶变换后的振幅f=n*fs/N; %频率序列subplot(2,2,4),plot(f,mag); %绘出随频率变化的振幅xlabel('频率/Hz');ylabel('振幅');title('傅里叶变换后的信号');grid on;四实验结果及结果分析1、实验结果2、结果分析由“傅里叶变换后的信号”图知有用信号的频率是1×107Hz=10MHz=f0,符合实验设定的事实,实验成功。
自动控制技术大作业学院电子工程学院学号学生姓名授课老师源程序:ft = 30;M=1;B=5;K=20;tspan = [0,5];x0= [0,0];options = odeset('AbsTol',[1e-6;1e-6]);[T,X]=ode45('xt4odefile',tspan,x0,options);figure(1)subplot(3,1,1),plot(T,X(:,1),'r'),title('位移随时间变化曲线'),grid on subplot(3,1,2),plot(T,X(:,2),'b'),title('速度随时间变化曲线'),grid on subplot(3,1,3),plot(X(:,2),X(:,1),'m'),title('位移随速度变化曲线'),grid ona = 1/M*(ft-B*X(:,2)-K*X(:,1));i = 1;while (abs(a(i))>0.0001|(abs(X(i,2))>0.0001))i = i+1;enddisp('系统到达稳态时的时间、速度和加速度及对应的位移分别为:'); result = sprintf('时间t=%4.2f\n',T(i));disp(result);result = sprintf('速度v=%9.6f\n',X(i,2));disp(result);result = sprintf('加速度a=%9.6f\n',a(i));disp(result);result = sprintf('位移d=%6.4f\n',X(i,1));disp(result);其中xt4odefile.m 文件为function xt = odefileC(t,x); ft = 30;M=1;B=5;K=20;xt = [x(2);1/M*(ft-B*x(2)-K*x(1))]; end输出:系统到达稳态时的时间、速度和加速度及对应的位移分别为: 时间 t=4.47速度 v=-0.000087加速度 a=-0.000060位移 d=1.50000.51 1.52 2.53 3.54 4.55012位移随时间变化曲线00.51 1.52 2.53 3.54 4.55-505速度随时间变化曲线-0.500.51 1.52 2.53 3.5012位移随速度变化曲线源程序:num=[2,5,7];den=[1,6,10,6];[z,p,k]=tf2zp(num,den)[r,a,b]=residue(num,den)输出:z =-1.2500 + 1.3919i-1.2500 - 1.3919ip =-3.7693-1.1154 + 0.5897i-1.1154 - 0.5897ik =2r =2.2417-0.1208 - 1.0004i-0.1208 + 1.0004ia =b =[]结论:零点为-1.2500 + 1.3919i ,-1.2500 - 1.3919i ;极点为-3.7693 ,-1.1154 + 0.5897i,-1.1154 - 0.5897i ;增益为2源程序:num=[6.3223,18,12.811];den=[1,6,11.3223,18,12.811];t=0:0.005:20;[y,x,t]=step(num,den,t);plot(t,y);grid ontitle('单位阶跃响应曲线')xlabel('t')ylabel('c(t)')r10=1;while y(r10)<.1; r10=r10+1;end;r90=1;while y(r90)<.9; r90=r90+1;end;rise_time=(r90-r10)*0.005[ymax,tp]=max(y);peak_time=(tp-1)*.005max_overshoot=ymax-1s=4001;while y(s)>.98&y(s)<1.02;s=s-1;end; setting_time=(s-1)*.005输出:rise_time =0.5750peak_time =1.6700max_overshoot =0.6182setting_time =10.0300246810121416182000.20.40.60.811.21.41.61.8单位阶跃响应曲线tc (t )源程序:num=[1 1];den=[1 5 6 0]; sys1=tf(num,den) subplot(3,1,1) step(sys1) subplot(3,1,2) rlocus(num,den)title('系统的根轨迹曲线') r=rlocus(num,den,20.575) a=[1];b=[1 0.8989];sys2=tf(a,b)sys=series(sys1,sys2)%系统串联subplot(3,1,3)step(sys)输出:Transfer function:s + 1-----------------s^3 + 5 s^2 + 6 sr =-2.0505 + 4.3225i -2.0505 - 4.3225i -0.8989Transfer function:1----------s + 0.8989Transfer function:s + 1-------------------------------------s^4 + 5.899 s^3 + 10.49 s^2 + 5.393 s00.511.522.53x 104500010000Step ResponseTime (sec)A m p l i t u d e-3.5-3-2.5-2-1.5-1-0.500.5-10010系统的根轨迹曲线Real Axis I m a g i n a r y A x i s00.51 1.52 2.53x 104500010000Step ResponseTime (sec)A m p l i t u d e源程序:w=logspace(-1,3,1000); %比例环节 num0=0.01; den0=1;g0=tf(num0,den0); bode(g0,w) title('比例环节') grid%二阶积分环节 num1=1; den1=[1,0,0];g1=tf(num1,den1); figure(2)bode(g1,w)title('二阶积分环节') grid%二阶微分环节num2=[1,0.01,1]; den2=1;g2=tf(num2,den2); figure(3)bode(g2,w)title('二阶微分环节') grid%振荡环节num3=1;den3=[0.25,0.01,1]; g3=tf(num3,den3); figure(4)bode(g3,w)title('振荡环节')grid%总:num=0.01*[1,0.01,1]; den=[0.25,0.01,1,0,0]; g=tf(num,den); figure(5)bode(g,w)title('原总波特图') grid输出:-41-40.5-40-39.5-39M a g n i t u d e (d B )10-110101102103-1-0.500.51P h a s e (d e g )比例环节Frequency (rad/sec)-150-100-5050M a g n i t u d e (d B )10-110101102103-181-180.5-180-179.5-179P h a s e (d e g )二阶积分环节Frequency (rad/sec)-50050100150M a g n i t u d e (d B )10-1101011021034590135180P h a s e (d e g )二阶微分环节Frequency (rad/sec)-150-100-5050M a g n i t u d e (d B )10-110101102103-180-135-90-450P h a s e (d e g )振荡环节Frequency (rad/sec)-150-100-50M a g n i t u d e (d B )10-110101102103-180-135-90-450P h a s e (d e g )原总波特图Frequency (rad/sec)源程序:num=[0,20,20,10];den=conv([1,1,0],[1,10]); nyquist(num,den)输出:-1-0.500.51 1.52-20-15-10-55101520Nyquist DiagramReal AxisI m a g i n a r y A x i s源程序:num=[2000,2000];den=conv([1 0.5 0],[1 14 400]); nichols(num,den) v = [-270 -90 -40 40]; axis(v) ngrid输出:-270-225-180-135-90-40-30-20-10102030406 dB3 dB 1 dB 0.5 dB0.25 dB0 dBNichols ChartOpen-Loop P hase (deg)O p e n -L o o p G a i n (d B )源程序:num = [0 2000 2000]; den = conv([1 0.5 0],[1 14 400]); h=tf(num,den); bode(h);num = [0 2000 2000]; den = conv([1 0.5 0],[1 14 400]); h=tf(num,den);[gm,pm,wg,wc]=margin(h)输出:gm =2.7493pm =73.3527wg =19.8244 wc =5.3477-150-100-50050100M a g n i t u d e (d B )10-210-110101102103-270-225-180-135-90P h a s e (d e g )Bode DiagramFrequency (rad/sec)源程序:num=[0 0 0 1];den=conv([.5 1 0],[1 1]); sysp=tf(num,den) sys=feedback(sysp,1) w=logspace(-1,1); bode(sys,w)grid on;[mag,phase,w]=bode(sys,w);[Mp,k]=max(mag);resonant_peak=20*log10(Mp)resonant_fre=w(k)n=1;while 20*log10(mag(n))>-3;n=n+1;end; bandwidth=w(n)输出:Transfer function:1---------------------0.5 s^3 + 1.5 s^2 + sTransfer function:1-------------------------0.5 s^3 + 1.5 s^2 + s + 1resonant_peak =5.2388resonant_fre =0.7906bandwidth =1.2649-60-40-2020M a g n i t u d e (d B )10-110101-270-180-90P h a s e (d e g )Bode DiagramFrequency (rad/sec)3.1A源程序:num = [1 2 3]; den = [1 3 3 1]; [A,B,C,D] = tf2ss(num,den)输出:A =-3 -3 -11 0 00 1 0B =1C =1 2 3D =3.2B源程序:Z=[-1 -3];P=[0 -2 -4 -6];K=4;[A,B,C,D]=zp2ss(Z,P,K)输出:A =-10.0000 -4.8990 0 04.8990 0 0 0-6.0000 -4.2866 -2.0000 00 0 1.0000 0B =11C =0 0 0 4D =3.1C源程序:A=[0 1;1 -2];B=[0;1];C=[1 3];D=1;[num,den]=ss2tf(A,B,C,D); tf(num,den)[z,p,k]=ss2zp(A,B,C,D);zpk(z,p,k)输出:Transfer function:s^2 + 5 s-------------s^2 + 2 s - 1Zero/pole/gain:s (s+5)--------------------(s+2.414) (s-0.4142)源程序:A1=[0 1;-1 -2];B1=[0;1];C1=[1 3];D1=[1];A2=[0 1;-1 -3];B2=[0;1];C2=[1 4];D2=[0];[A,B,C,D]=series(A1,B1,C1,D1,A2,B2,C2,D2) [A,B,C,D]=parallel (A1,B1,C1,D1,A2,B2,C2,D2) [A,B,C,D]=feedback (A1,B1,C1,D1,A2,B2,C2,D2) [A,B,C,D]=feedback (A1,B1,C1,D1,A2,B2,C2,D2,+1)输出:串联连接A =0 1 0 0-1 -3 1 30 0 0 10 0 -1 -2B =11C =1 4 0 0D =并联连接A =0 1 0 0-1 -2 0 00 0 0 10 0 -1 -3B =11C =1 3 1 4D =1单位负反馈连接A =0 1 0 0-1 -2 -1 -40 0 0 11 3 -2 -7B =11C =1 3 -1 -4D =1单位正反馈连接A =0 1 0 0-1 -2 1 40 0 0 11 3 0 1B =11C =1 3 1 4D =1源程序:A=[0,-2;1,-3];t=.2;F=expm(A*t) %转移矩阵B=[2;0];C=[0,3];D=[0];x0=[1,1];t=[0,.2];u=0*t;[y,x]=lsim(A,B,C,D,u,t,x0)输出:F =0.9671 -0.2968 0.1484 0.5219 y =3.0000 2.0110 x =1.0000 1.00000.6703 0.6703结论:t=0.2时,系统响应为6703.0)0()0(21==x x ,y (0.2)=2.0110源程序:A=[-3,1;1,-3]; B=[1,1;1,1]; C=[1,1;1,-1]; D=[0];Qc=ctrb(A,B) Qo=obsv(A,C) Rc=rank(Qc) Ro=rank(Qo)输出:Qc =1 1 -2 -21 1 -2 -2Qo =1 11 -1-2 -2-4 4Rc =1Ro =2结论:能控性矩阵和能观性矩阵的秩分别为1,2,又系统阶次是2,故系统是不可控的,是可观测的。
M2.22.30(b)n=[-10:10];>> x=sin(0.8*pi*n+0.8*pi); >> stem(n,x)title('2.30(b)的序列')>> xlabel('n')>> ylabel('x')2.30(c)n=[-10:10];>> x=cos(pi*n/5);>> stem(n,x)>> title('the real part')>> xlabel('n')>> ylabel('re(x[n])')>> title('the real part of 2.30(c)')x=sin(pi*n/10);>> stem(n,x)>> title('the imaginary part of 2.30(c)')>> xlabel('n')>> ylabel('im(x[n])')2.30(d)n=[-20:20];>> x=3*cos(1.3*pi*n)-4*sin(0.5*pi*n+0.5*pi);>> stem(n,x)>> title('2.30(d)的序列')>> xlabel('n')>> ylabel('x[n]')2.30(e)n=[-20:20];>> x=5*cos(1.5*pi*n+0.75*pi)+4*cos(0.6*pi*n)-sin(0.5*pi*n); >> stem(n,x)>> title('2.30(e)的序列')>> xlabel('n')>> ylabel('x[n]')M2.7编写的程序如下% Program M2.7% Computation the discreet time system of exercise 2.40alpha=input('alpha=');y0=1;y1=0.5*(y0+(alpha/y0));while abs(y1-y0)>0.0001y2=0.5*(y1+(alpha/y1));y0=y1;y1=y2;enddisp('y[n]收敛于根号alpha=');y2运行结果如下:alpha=9y[n]收敛于根号alpha=y2 =3.0000alpha=30y[n]收敛于根号alpha=y2 =5.4772经两组数据对比,知已用仿真证明,n趋于无穷时,Y[n]收敛于根号下alpha。
西安电子科技大学课程论文数学软件与实验最速下降法求最优解姓名:方正阳学号:07117020班级:07117107112016、最速下降法求最优解1 2 n,然后MATLAB 结课大作业摘要:最速下降法,又称为梯度法,是一种重要的无约束最优化方法。
它是 1847年由著名数学家 Cauchy 给出的,其他解析方法或是它的变形,或是受它 启发而得到,因此它是最优化方法的基础。
该法将 n 维问题转化为一系列 不断迭代过程中沿负梯度方向用一维搜索方法寻优的问题,本次程序设计 利用最速下降法算法,反复迭代,最终收敛于局部最优点,即为解出的二 元函数的无约束非线性规划问题 minf(x,y)。
引言:最优化理论作为运筹学中的一个重要理论方法,在工业生产,金融经济活 动,工商管理,国防建设,计算机应用中,都有着重要的应用。
最优化理论 通过给出生产活动中的各类实际问题的数学模型,通过最优化方法,寻求 该问题的最优解或满意解。
最速下降算法是最优化理论中常见的一个重要 算法,理论证明:最速下降算法在一定条件下是收敛的,它能够有效地求 解一部分无约束最优化问题。
一、 实验目的熟悉最速下降法算法思想和步骤,用 MATLAB 语言编程最速下降法 求最优值。
二、 实验要求在最优化计算方法中,要求解 y = f (x 1, x 2 , , x n ) 的局部最小值,可以采用如下的方法进行迭代计算:先给出初始点 x 0 = (x 0 , x 0 , , x 0)根据其梯度方向 ∇f (x 0),计算一元函数 y (λ1 ) = min f (x λ≥0 0-λ⋅∇f (x 0 )) ,并1 0 0得到x = x -λ1 ⋅∇f (x ) 。
如此反复迭代,最终收敛于局部最优点。
实现 该算法,求 的最优值,a,b,c,d 自定(非 0)三、 实验假设考虑到参数的随机性、代表性,验证程序的正确性、典型性,在此 我们从两个角度出发,一是在 abcd 值确定的情况下改变初始搜索位置 x0,看函数最优解是否相同;二是初始搜索位置 x0 相同,abcd 值不同的 情况下,看函数最优解是否相同。
西安邮电学院《Matlab》实验报告(一)- 年第 1 学期自动化专业:自动0903 班级:学号:姓名:年9月28日MATLAB语言实验项目实验一熟悉MATLAB集成环境与基本运算一、实验目1.熟悉启动和退出MATLAB软件办法、熟悉MATLAB软件运营环境。
2.熟悉MATLAB命令窗口构成。
3.熟悉MATLAB基本操作。
4.掌握建立矩阵办法。
5.掌握MATLAB各种表达式书写规则以及惯用函数使用。
二、实验设备及条件计算机一台(MATLAB Rb软件环境)。
三、实验原理1.MATLAB启动MATLAB系统启动有三种常用办法:1)使用Windows“开始”菜单。
2)运营MATLAB系统启动程序matlab.exe。
3)运用快捷方式。
2.MATLAB系统退出要退出MATLAB系统,也有三种常用办法:1)在MATLAB主窗口File菜单中选取Exit matlab 命令。
2)在MATLAB命令窗口输入Exit或Quit命令。
3)单击MATLAB主窗口“关闭”按钮。
3.MATLAB协助窗口进入协助窗口可以通过如下三种办法:1)单击MATLAB主窗口工具栏中help按钮。
2)在命令窗口中输入helpwin、helpdesk或doc。
3)选取help菜单中“matlab help”选项。
4.MATLAB协助命令1)help命令在MATLAB命令窗口直接输入help命令将会显示当前协助系统中所包括所有项目,即搜索途径中所有目录名称。
同样,可以通过help加函数名来显示该函数协助阐明。
2)lookfor命令help命令只搜索出那些核心字完全匹配成果,lookfor命令对搜索范畴内m 文献进行核心字搜索,条件比较宽松。
3)模糊查询顾客只要输入命令前几种字母,然后按tab键,系统就会列出所有以这几种字母开头命令。
5.赋值语句1)变量=表达式2)表达式6.矩阵建立1)直接输入法:将矩阵元素用方括号括起来,按矩阵行顺序输入各元素,同一行各元素之间用空格或逗号分开,不同行元素之间用分号分开。
实验一运算基础及矩阵分析及处理一实验目的1.熟悉启动和退出的方法。
2.熟悉命令窗口的组成。
3.掌握建立矩阵的方法。
4.掌握各种表达式的书写规则以及常用函数的使用。
5. 掌握生成特殊矩阵的方法。
6. 掌握矩阵分析的方法。
7. 用矩阵求逆解线性方程组。
二实验仪器和设备装有6.0以上计算机一台三实验原理是以复杂矩阵作为基本编程单元的一种程序设计语言。
它提供了各种矩阵的运算及操作,并有较强的绘图功能。
1.1 基本规则1.1.1 一般命令格式为[输出参数1,输出参数2,……]=(命令名)(输入参数1,输入参数2,……)输出参数用方括号,输入参数用圆括号如果输出参数只有一个可不使用括号。
1.1.2 %后面的任意内容都将被忽略,而不作为命令执行,一般用于为代码加注释。
1.1.3 可用↑、↓键来重现已输入的数据或命令。
用←、→键来移动光标进行修改。
1.1.4所有命令都用小写字母。
大写字母和小写字母分别表示不同的变量。
1.1.5常用预定义变量,如、、、1.1.6矩阵的输入要一行一行的进行,每行各元素用空格或“,”分开,每行用“;”分开。
如书写格式为[1 2 3 ;4 5 6 ;7 8 9]在中运行如下程序可得到A矩阵[1 2 3;4 5 6;7 8 9]a =1 2 34 5 67 8 91.1.7 需要显示命令的计算结果时,则语句后面不加“;”号,否则要加“;”号。
运行下面两种格式可以看出它们的区别:[1 2 3;4 5 6;7 8 9] [1 2 3;4 5 6;7 8 9];1 2 3 不显示结果4 5 67 8 91.1.8 当输入语句过长需要换行时,应加上“…”后再回车,则可续行输入。
1.2 文件管理常用命令1.2.1 帮助()命令有很多命令,因此很不容易记忆。
使用命令可以得到有关命令的屏幕帮助信息。
如在环境下直接运行命令就会在屏幕上给出的基本命令以及相关的工具箱软件命令(请自行验证)。
而下面的格式可以得到指定命令的帮助信息,和详细说明。