MATLAB 双侧频谱图绘制:更简洁更高效的代码
当然可以!以下是更简洁且更高级的MATLAB代码,使用FFTshift函数对频谱进行了居中处理,并绘制了双侧频谱:
% 设置参数
fs = 100; % 采样频率为100Hz
f1 = 15; % 正弦信号1的频率为15Hz
f2 = 40; % 正弦信号2的频率为40Hz
A1 = 0.5; % 正弦信号1的幅值为0.5
A2 = 2; % 正弦信号2的幅值为2
% 生成时间序列
t = 0:1/fs:1-1/fs; % 一秒钟内的时间序列,采样频率为100Hz
% 生成信号序列
x = A1 * sin(2*pi*f1*t) + A2 * sin(2*pi*f2*t); % 信号由两个正弦信号组成
% 计算FFT
N = 1024;
X = fftshift(fft(x, N)); % 计算FFT并进行居中处理
% 计算频率轴
frequencies = linspace(-fs/2, fs/2, N); % 生成双侧频率轴
% 绘制幅频图
plot(frequencies, abs(X));
title('双侧频谱图');
xlabel('频率 (Hz)');
ylabel('幅值');
% 设置坐标轴范围
xlim([-50, 50]);
% 添加网格线
grid on;
这段代码会生成一个更高级的双侧频谱图,其中信号的频谱会在水平轴上从-50Hz到50Hz范围内显示。同时,添加了网格线以增加图像的可读性。
请注意,这段代码使用了fftshift函数对频谱进行居中处理,以更直观地显示频率的正负部分。
原文地址: https://www.cveoy.top/t/topic/XRP 著作权归作者所有。请勿转载和采集!