1 / 28

实验一  MATLAB 的基本操作、编程基础

实验一  MATLAB 的基本操作、编程基础. 一、实验目的 1. 初步了解 matlab 6.5 应用环境; 2. 练习利用 matlab 6.5 中的命令或程序描述基本信号; 3. 练习 matlab 6.5 中的绘图方法; 4. 初步练习 M-File 的建立、保存、调用。. 二、实验原理与方法 各种信号、运算形式的数学描述及相应的命令或程序。. 涉及函数. 矩阵生成函数: 1 、 zeros ; 2 、 ones ; 3 、 rand ; 4 、 randn 。

brenna
Download Presentation

实验一  MATLAB 的基本操作、编程基础

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 实验一 MATLAB的基本操作、编程基础 一、实验目的 1.初步了解matlab 6.5应用环境; 2.练习利用matlab 6.5中的命令或程序描述基本信号; 3.练习matlab 6.5中的绘图方法; 4.初步练习M-File的建立、保存、调用。 二、实验原理与方法 各种信号、运算形式的数学描述及相应的命令或程序。

  2. 涉及函数 矩阵生成函数:1、zeros;2、ones;3、rand;4、randn。 画图函数:1、figure;2、plot;3、subplot;4、stem;5、xlabel;6、ylabel;7、title;8、text;9、axis。 数学运算函数:1、min;2、max;3、abs;4、 angle;5、 cos;6、exp;7、conv 。 调试函数:error 其他函数:find fliplr

  3. 三、实验内容及步骤 1.启动matlab 6.5,了解常用窗口及其作用;

  4. 2.MATLAB编程基础 请在命令窗口中输入蓝色部分,结合讲授进行理解 1)常用一维矩阵的生成 N=10 A=zeros(1,N) %生成1行N列的全0矩阵 A=ones(1,N) %生成1行N列的全1矩阵 A=randn(1,N) %生成1行N列的随机矩阵 2)简单一维矩阵的生成 x1=[1 2 3 0 0] x=0.123 y1=[1,2,3,4,5] y=123

  5. 请在命令窗口中输入蓝色部分,结合讲授进行理解请在命令窗口中输入蓝色部分,结合讲授进行理解 3)利用冒号生成向量 a1=0:1:9 b1=0:9 t=-0.1:0.01:0.1 %生成有N个元素的行向量X,其值在a与b之间线性分布 a=1; b=100; N=10; X=linspace(a,b,N) %生成有N个元素的行向量Y,其值在10a与10b之间等分分布 a=1; b=5; N=10; Y=logspace(a,b,N) 4)基本语句格式 变量名列表=表达式; %左边是返回值,右边是表达式的定义

  6. 请在命令窗口中输入蓝色部分,结合讲授进行理解请在命令窗口中输入蓝色部分,结合讲授进行理解 5)for循环语句基本格式 for 循环变量=起始值:步长:终止值 循环体 end 例: for i=10:-1:1 y(i)=i; end y 执行后y的值为 y= 1 2 3 4 5 6 7 8 9 10

  7. 6)while循环语句基本格式 while 表达式 循环体 end 例: sum=0;i=0; while sum<100 i=i+1; sum=sum+i; end sum i 执行后sum的值为 sum= 105 i= 14 请在命令窗口中输入蓝色部分,结合讲授进行理解

  8. 7)if语句基本格式 if 逻辑表达式 语句 end 例: for i=1:10 a(i)=i; if i>5 a(i)=10-i; end end a 执行后a的值为 a= 1 2 3 4 5 4 3 2 1 0 请在命令窗口中输入蓝色部分,结合讲授进行理解

  9. 8)if-else语句基本格式 例: if x>=1 y=10; elseif x>-1 & x<1 y=0; else y=-10; end 上述程序段的功能为? 请在命令窗口中输入蓝色部分,结合讲授进行理解

  10. 9)switch语句基本格式 switch 表达式 case 值1 语句1 case 值2 语句2 … otherwise 语句n end

  11. 请在命令窗口中输入蓝色部分,结合讲授进行理解请在命令窗口中输入蓝色部分,结合讲授进行理解 10)MATLAB自定义函数(M-File)基本格式 先定义后保存再调用 定义:在M-File窗口中输入 function c =WAdd(a,b)%函数定义行 c = a+b;%函数体的语句 保存:保存在work文件夹中以便调用 调用:在命令窗口中输入 a=1; b=1; c= WAdd(a,b) ;%得到c=2 相关说明:1.写M-file的地方:在选择File/New/M-file后出现的窗口中;2. function是关键字;3. M-file的保存:一般应保存在Matlab工作目录中的work文件夹下。文件名是函数名字,如WAdd.m,否则无法调用。

  12. 请在命令窗口中输入蓝色部分,结合讲授进行理解请在命令窗口中输入蓝色部分,结合讲授进行理解 3. 基本信号的表示、引用、图形描述 表示x(n) ,一般应采用两个矢量,如 x1=[1 -1 3 2 0 4 5 2 1] %产生序列x1(n) nx1=[-3 -2 -1 0 1 2 3 4 5] x2=[1,-1,3,2,0,4,5,2,1] %产生序列x2(n) nx2=-3:5 x3=[1,-1,3,2,0,4,5,2,1] ; %产生序列x3(n) nx3=[-3,-2,-1,0,1,2,3,4,5]; x3 nx3

  13. 练习 X(1)=? Matlab与C,C++不同,矩阵(向量)坐标从1开始,而不是从零开始 注:1. matlab命令可在command window中直接输入; 2. 注意命令后有无“;” 的区别。 3. %表示注释

  14. %单位取样序列(1):δ(n) N=8; x=zeros(1,N);% x=0 0 0 0 0 0 0 0 x(1)=1;% x=1 0 0 0 0 0 0 0 %单位取样序列(2):δ(n) N=8; n=0:N-1; x=[n==0]; %移位单位取样序列(3):δ(n-n0) n1=0;n2=10;n0=5; n=n1:n2; x=[(n-n0)==0];% x=0 0 0 0 0 1 0 0 0 0 0

  15. %单位阶跃序列(1):u(n) N=10; x=ones(1,N);% x=1 1 1 1 1 1 1 1 1 1 %产生n1=<n0=<n2上的单位阶跃序列(2):u(n-n0) n1=0;n2=10;n0=5 n=n1:n2; x=[(n-n0>=0)];% x=0 0 0 0 0 1 1 1 1 1 1

  16. % 产生 x(n) = u(n-n0)的M-file或自定义函数; n1≤n,n0 ≤ n2 function [x,n] = stepseq(n0,n1,n2) if ((n0 < n1) | (n0 > n2) | (n1 > n2)) error('参数必须满足 n1 <= n0 <= n2') end n = [n1:n2]; x = [(n-n0) >= 0]; %x = [zeros(1,(n0-n1)), ones(1,(n2-n0+1))]; 保存: 调用:生成u(n-8),区间为0到20 则 [x,n] = stepseq(8,0, 20) 结果? 调用:调用自定义函数产生单位阶跃序列(2):u(n-5)、 u(n-10) n1=0; n2=19; [x1,nx1] = stepseq(5,n1,n2) % u(n-5) [x2,nx2] = stepseq(10,n1,n2) % u(n-10)

  17. %实指数序列:x(n)=anu(n) N=5;a=0.5; n=0:N-1; x=a.^n;% x=1.0000 0.5000 0.2500 0.1250 0.0625 %正(余)弦序列:x(n)=cos(wn+Φ) N=5; w0=pi/4; Q=pi/3; n=0:N-1; x=cos(w0*n+Q);% x=0.5000 -0.2588 -0.8660 -0.9659 -0.5000 %周期序列 y=[x x x x];%4个周期的序列

  18. %复指数序列:x(n)=e(σ+jw)n N=3;sigma=0.5;w0=pi/4; n=0:N-1; x=exp((sigma+j*w0)*n);% x=1.0000 1.1658 + 1.1658i 0.0000 + 2.7183i %这里的i和j为虚部标识。再如: x=1+2j或y=1+2i x1=abs(x);%序列x的幅值 x2=angle(x);%序列x的相位 %随机序列 N=5; rand(1,N);%N点,在[0,1]上均匀分布 randn(1,N);%N点,均值为0方差为1的高斯随机序列 rand('state',0)

  19. %序列操作 %实现信号加的M-file :y(n)=x1(n)+x2(n) function [y,n] = sigadd(x1,n1,x2,n2) % implements y(n) = x1(n)+x2(n) % ----------------------------- % [y,n] = sigadd(x1,n1,x2,n2) % y = sum sequence over n, which includes n1 and n2 % x1 = first sequence over n1 % x2 = second sequence over n2 (n2 can be different from n1) % 信号的长度一样才能相加,起点和止点一样才不会加错 n = min(min(n1),min(n2)):max(max(n1),max(n2));% duration of y(n) y1 = zeros(1,length(n)); y2 = y1;% initialization y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;% x1 with duration of y y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;% x2 with duration of y y = y1+y2;% sequence addition

  20. %实现信号乘的M-file : y(n)=x1(n) x2(n) function [y,n] = sigmult(x1,n1,x2,n2) % implements y(n) = x1(n)*x2(n) % ----------------------------- % [y,n] = sigmult(x1,n1,x2,n2) % y = product sequence over n, which includes n1 and n2 % x1 = first sequence over n1 % x2 = second sequence over n2 (n2 can be different from n1) % 信号的长度一样才能相乘,起点和止点一样才不会乘错 n = min(min(n1),min(n2)):max(max(n1),max(n2)); % duration of y(n) y1 = zeros(1,length(n)); y2 = y1; y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; % x1 with duration of y y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; % x2 with duration of y y = y1.*y2; % sequence multiplication

  21. %改变比例:y(n)=ax(n) y=a*x; %移位的M-file:y(n)=x(n-n0) function [y,n] = sigshift(x,m,n0) % implements y(n) = x(n-n0) % ------------------------- % [y,n] = sigshift(x,m,n0) % n = m+n0; y = x; %折叠的M-file:y(n)=x(-n) function [y,n] = sigfold(x,n) % implements y(n) = x(-n) % ----------------------- % [y,n] = sigfold(x,n) % y = fliplr(x); n = -fliplr(n); %取样和: y=sum(x(n1:n2)); %取样积 y=prod(x(n1:n2)); %信号能量 Ex=sum(x.*conj(x)); Ex=sum(abs(x).^2); %信号功率 Px=sum(abs(x).^2)/N;

  22. %信号加、乘、移位、折叠例子 Exp1_1 x1=[1 2 3 0 1 2 3];n1=[0 1 2 3 4 5 6]; x2=[1 2 3 4 5];n2=-1:3; [z1,nz1]=sigadd(x1,n1,x2,n2); %调用自定义相加函数 [z2,nz2]=sigmult(x1,n1,x2,n2); %调用自定义相乘函数 [z3,nz3]=sigshift(x1,n1,3); %调用自定义移位函数 [z4,nz4]=sigfold(x1,n1); %调用自定义反褶函数 %画图,红色x轴,蓝色y轴 figure(1); %调用第1个图形窗口 subplot(221);stem(n1,x1);xlabel('n1');ylabel('x1'); subplot(223);stem(n2,x2);xlabel('n2');ylabel('x2'); subplot(222);stem(nz1,z1);xlabel('nz1');ylabel('z1=x1+x2'); subplot(224);stem(nz2,z2);xlabel('nz2');ylabel('z2=x1*x2'); figure(2); %调用第2个图形窗口 subplot(311);stem(n1,x1);xlabel('n1');ylabel('x1'); subplot(312);stem(nz3,z3);xlabel('nz3');ylabel('z3=x1(n-3)'); subplot(313);stem(nz4,z4);xlabel('nz4');ylabel('z4=x(-n)');

  23. %卷积运算的M-file:y(n)=x1(n)*x2(n) function [y,ny] = conv_m(x,nx,h,nh) % Modified convolution routine for signal processing % -------------------------------------------------- % [y,ny] = conv_m(x,nx,h,nh) % y = convolution result % ny = support of y % x = first signal on support nx % nx = support of x % h = second signal on support nh % nh = support of h % nyb = nx(1)+nh(1); %卷积结果起点 nye = nx(length(x)) + nh(length(h)); %卷积结果止点 ny = [nyb:nye]; y = conv(x,h);

  24. %卷积运算例子: 已知:h(n)=(0.9)nu(n),x(n)=u(n)-u(n-10).求y(n)=h(n)*x(n). n = -5:50; u1 = stepseq(0,-5,50); %u(n)=u1(n) u2=stepseq(10,-5,50); %u(n-10)=u2(n) x = u1-u2; % input x(n)= u(n)-u(n-10) h = ((0.9).^n).*u1; % 脉冲响应 h(n) %画图,红色x轴,蓝色y轴 figure(1); subplot(3,1,1); stem(n,x); axis([ -5,50 , 0,2 ]); title('输入序列');ylabel('x(n)');text(52,0,'n'); subplot(3,1,2); stem(n,h); axis([-5,50,0,2]) title('脉冲响应');ylabel('h(n)'); text(52,0,'n'); %调用卷积运算的M-file求输出响应 [y,ny] =conv_m(x,n,h,n); subplot(3,1,3); stem(ny,y); axis([-5,50,0,8]) title('输出序列');ylabel('y(n)');text(52,0,'n');

  25. 更多的信号产生函数 1)gauspuls:产生高斯调制的正弦脉冲 yi=gauspuls(t,fc,bw); %fc中心频率,bw带宽 2)gmonopuls:产生高斯单脉冲 y=gmonopuls(t,fc); %fc中心频率 3) pulstran:产生脉冲串 y=pulstran(t,d,’func’); %func=gauspuls或rectpuls或tripuls 4) rectpuls:产生非周期矩形的取样信号 y=rectpuls(t); y=rectpuls(t,w);%指定矩形的宽度

  26. 5) sawtooth:产生锯齿波或三角波 y=sawtooth(t); y=sawtooth(t,width);%0<width≤1 6) sinc:产生sinc函数 y=sinc(x); 7) square:产生方波 y=square(t); y=square(t,duty);%duty指定占空比 8) tripuls:产生非周期三角波的取样信号方波 y=tripuls(T); y= tripuls(T,w); %w指宽度 y= tripuls(T,w,s); %s指斜度-1<s<1

  27. 3.画出以下各序列在给定区间的图形。 • 1) x(n)=2δ(n+2)-δ(n-4)+δ(n) ,-5≤n≤5 • 2) x(n)=n[u(n)-u(n-10)]+10e-0.3(n-10)[u(n-10)-u(n-20)], • 0≤n≤20 • 3) x(n)=2-cos(0.4πn)- cos(0.8πn), 0≤n≤50 • 4.令x(n)={1,2,3,4,5,6,7,6,5,4,3,2,1},画出下列序列的图形 • 1) x1(n)=2x(n-5)-3x(n-4) • 2) x2(n)=x(3-n)-x(n)x(n-2) • 3) xe(n)和xo(n) ---通过编写求xe(n)、xo(n)的M-file来实现(需要给出测试函数) xe(n) 和xo(n)分别为x(n)的偶部和奇部 五、实验报告要求 1.简述实验目的及实验原理; 2.记录实验内容3、4的命令或程序及图形。

More Related