MATLAB 实现离散信号时域和频域分析
% 定义两个空数组
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 的时域和频域分析,并绘制相应的波形图。
代码解释:
-
定义两个空数组
x2n=[];x3n=[]; -
循环0到7
for m=0:7 -
判断m是否小于等于3
if m<=3 -
如果m小于等于3,将m+1赋值给x2n数组中下标为m+1的元素
x2n(m+1)=m+1; -
将4-m赋值给x3n数组中下标为m+1的元素
x3n(m+1)=4-m; -
如果m大于3,将8-m赋值给x2n数组中下标为m+1的元素
x2n(m+1)=8-m; -
将m-3赋值给x3n数组中下标为m+1的元素
x3n(m+1)=m-3; -
绘制时域波形图
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;
通过以上代码,您可以实现两个离散信号的时域和频域分析,并观察其波形图。该代码可以帮助您理解离散信号的特性,以及时域和频域之间的关系。
原文地址: https://www.cveoy.top/t/topic/ojOS 著作权归作者所有。请勿转载和采集!