% 定义两个空数组
x2n=[];x3n=[];
% 循环0到7
for m=0:7
    % 判断m是否小于等于3
    if m<=3
        % 如果是,将m+1赋值给x2n数组中下标为m+1的元素
        x2n(m+1)=m+1;
        % 将4-m赋值给x3n数组中下标为m+1的元素
        x3n(m+1)=4-m;
    else
        % 如果m大于3,将8-m赋值给x2n数组中下标为m+1的元素
        x2n(m+1)=8-m;
        % 将m-3赋值给x3n数组中下标为m+1的元素
        x3n(m+1)=m-3;
    end
end
% 绘制时域波形图
figure;
subplot(211);stem(x2n); title('x2n时域波形');
subplot(212);stem(x3n); title('x3n时域波形');
% 绘制频域波形图
figure;
for r=1:3
    % 获取r的长度
    N=length(r);
    % 计算dw
    dw=2*pi/N;
    % 计算k
    k=floor(-N/2+0.5:N/2-0.5);
    % 计算FFT结果
    X2=fftshift(fft(x2n,N));
    X3=fftshift(fft(x3n,N));
    
    % 绘制幅度谱图
    subplot(2,1,1);plot(k*dw,abs(X2));title('x2n[8,16,32]点FFT频谱结果'); hold on;
    subplot(2,1,2);plot(k*dw,abs(X3));title('x3n[8,16,32]点FFT频谱结果');hold on;
    grid;
    
end

本代码使用 MATLAB 实现两个离散信号 x2n 和 x3n 的时域和频域分析,并绘制相应的波形图。

代码解释:

  1. 定义两个空数组 x2n=[];x3n=[];

  2. 循环0到7 for m=0:7

  3. 判断m是否小于等于3 if m<=3

  4. 如果m小于等于3,将m+1赋值给x2n数组中下标为m+1的元素 x2n(m+1)=m+1;

  5. 将4-m赋值给x3n数组中下标为m+1的元素 x3n(m+1)=4-m;

  6. 如果m大于3,将8-m赋值给x2n数组中下标为m+1的元素 x2n(m+1)=8-m;

  7. 将m-3赋值给x3n数组中下标为m+1的元素 x3n(m+1)=m-3;

  8. 绘制时域波形图 figure; subplot(211);stem(x2n); title('x2n时域波形'); subplot(212);stem(x3n); title('x3n时域波形');

  9. 绘制频域波形图 figure; for r=1:3

  10. 获取r的长度 N=length(r);

  11. 计算dw dw=2*pi/N;

  12. 计算k k=floor(-N/2+0.5:N/2-0.5);

  13. 计算FFT结果 X2=fftshift(fft(x2n,N)); X3=fftshift(fft(x3n,N));

  14. 绘制幅度谱图 subplot(2,1,1);plot(k*dw,abs(X2));title('x2n[8,16,32]点FFT频谱结果'); hold on; subplot(2,1,2);plot(k*dw,abs(X3));title('x3n[8,16,32]点FFT频谱结果');hold on; grid;

通过以上代码,您可以实现两个离散信号的时域和频域分析,并观察其波形图。该代码可以帮助您理解离散信号的特性,以及时域和频域之间的关系。

MATLAB 实现离散信号时域和频域分析

原文地址: https://www.cveoy.top/t/topic/ojOS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录