Advertisement

Matlab实验:时域离散信号与系统的变换域分析

阅读量:

1.题目

产生余弦信号

及带噪信号

噪声采用randn函数,a及 N 自定

完整代码

复制代码
 %令a=1,N=20;

    
 f=0.04;
    
 a=2;
    
 Um=1;
    
 Nt=2;
    
 N=20
    
 T=1/f;
    
 dt=T/N;
    
 n=1:nt*N-1;
    
 tn=n*dt;
    
 x=Um*cos(1*f*pi*tn);
    
 subplot(2,1,1),stem(tn,x);
    
 ylabel(‘x(n)’);
    
 title(‘离散余弦信号’);
    
 NOISE=randn(size(x));
    
 NOISE=NOISE-mean(NOISE);
    
 Signal_power=1/length(x)*sum(x.*x);
    
 Noise_variance=signal_power/(10^(2/10));
    
 NOISE=sqrt(noise_variance)/std(NOISE)*NOISE;
    
 Y=x+NOISE;
    
 subplot(2,1,2),plot(Y);

结果如图

2.题目

已知 ,求两个序列的和、乘积、序列x1的移位序列(移位方向及位数自定),序列x2的翻褶序列,画出原序列及运算结果图。

结果:

序列 x1(n)为{1,3,5,7,9}

序列 x2(n)为{2,4,6,8,10}

和:{1,5,9,13,17,10}

乘积{0,6,20,42,56,0}

X1****右移四位{1,3,5,7,9}

x2****的翻褶序列{10,8,6,4,2}

完整代码(可直接运行):

复制代码
 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)
    
 n1=1:5;                       %定义n的范围
    
 x1=2*n1-1;
    
 subplot(2,3,1),stem(n1,x1,'b.');               %绘制离散图像
    
 title('实指数序列x1');  %对图像主题的说明
    
 xlabel('n1');      
    
 ylabel('x1');          %对纵轴进行说
    
 %实指数序列
    
 n2=2:6;                       %定义n的范围
    
 x2=2*n2-2;
    
 subplot(2,3,2),stem(n2,x2,'b.');               %绘制离散图像
    
 title('实指数序列x2');  %对图像主题的说明
    
 xlabel('n2');      
    
 ylabel('x2');          %对纵轴进行说明
    
  
    
 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 y1
    
 y2( find( ( n >= min(n2) )&( n <= max(n2) ) == 1  )  ) = x1; %x2 with duration of y2
    
 y=y1+y2;
    
 subplot(2,3,3),stem(n,y,'b.');     
    
 xlabel('n');      
    
 ylabel('x1+x2');          %对纵轴进行说明
    
  
    
 yy=y1.*y2;
    
 subplot(2,3,4),stem(n,yy,'b.');     
    
 xlabel('n');      
    
 ylabel('x1*x2');          %对纵轴进行说明
    
  
    
 n1=n1+4;
    
 yyy=x1;
    
 subplot(2,3,5),stem(n1,yyy,'b.');   
    
 xlabel('n1');      
    
 ylabel('x1→4'); 
    
  
    
 yyyy = fliplr(x2);
    
 n2 = -fliplr(n2);
    
 subplot(2,3,6),stem(n2,yyyy,'b.');   
    
 xlabel('n2');      
    
 ylabel('x2反转');

全部评论 (0)

还没有任何评论哟~