写100行matlab信号频谱分析代码
时间: 2023-08-24 20:21:42 浏览: 114
以下是一个简单的MATLAB程序,用于计算一个信号的频谱并进行绘制:
```matlab
% 生成信号
Fs = 1000; % 采样率
t = 0:1/Fs:1-1/Fs; % 时间向量
f1 = 50; % 第一个正弦波的频率
f2 = 100; % 第二个正弦波的频率
x = 0.7*sin(2*pi*f1*t) + sin(2*pi*f2*t); % 合成信号
% 时域绘图
figure;
plot(t,x);
xlabel('时间 (秒)');
ylabel('振幅');
title('合成信号时域图');
% 频域绘图
X = fft(x); % FFT
P2 = abs(X/Fs); % 双边频谱
P1 = P2(1:N/2+1); % 单边频谱
P1(2:end-1) = 2*P1(2:end-1);
f = Fs*(0:(N/2))/N; % 频率向量
figure;
plot(f,P1);
xlabel('频率 (Hz)');
ylabel('振幅');
title('合成信号频域图');
```
这个程序首先生成了一个合成信号,由两个正弦波叠加而成。然后,它绘制了合成信号的时域图和频域图。在频域图中,使用了FFT计算信号的频谱,并将双边频谱转换为单边频谱,最后绘制了单边频谱的图形。
阅读全文