matlab绘制正弦波方波三角波波形频谱
时间: 2025-06-20 18:00:33 浏览: 13
### 绘制正弦波、方波和三角波的波形及其频谱
以下是完整的 MATLAB 实现方法,用于绘制正弦波、方波和三角波的波形以及它们对应的频谱。
#### 正弦波的绘制与频谱分析
通过定义正弦波的基本参数(幅值 `A`、频率 `f` 和相位 `p`),可以生成并绘制其波形。随后利用快速傅里叶变换(FFT)计算其频谱[^2]。
```matlab
%% 参数设置
clear; close all; clc;
fs = 1000; % 采样率 (Hz)
T = 1/fs; % 采样周期
L = 1500; % 总样本数
t = (0:L-1)*T; % 时间向量
% 正弦波信号
A = 3; % 幅度
f = 50; % 频率 (Hz)
y_sin = A * sin(2*pi*f*t);
figure(1);
subplot(2,1,1);
plot(t, y_sin);
title('正弦波');
xlabel('时间 / 秒');
ylabel('幅度');
% FFT 计算频谱
Y_fft = fft(y_sin);
P2 = abs(Y_fft/L); % 双边频谱密度
P1 = P2(1:L/2+1); % 单边频谱密度
P1(2:end-1) = 2*P1(2:end-1);
f_axis = fs*(0:(L/2))/L;
subplot(2,1,2);
plot(f_axis, P1);
title('正弦波频谱');
xlabel('频率 / Hz');
ylabel('|P1|');
```
---
#### 方波的绘制与频谱分析
可以通过调用 MATLAB 的内置函数 `square()` 来生成方波,并对其应用 FFT 进行频谱分析[^1]。
```matlab
%% 方波信号
DutyCycle = 50; % 脉冲占空比 (%)
y_square = square(2*pi*f*t, DutyCycle);
figure(2);
subplot(2,1,1);
plot(t, y_square);
title('方波');
xlabel('时间 / 秒');
ylabel('幅度');
% FFT 计算频谱
Y_fft_sq = fft(y_square);
P2_sq = abs(Y_fft_sq/L);
P1_sq = P2_sq(1:L/2+1);
P1_sq(2:end-1) = 2*P1_sq(2:end-1);
subplot(2,1,2);
plot(f_axis, P1_sq);
title('方波频谱');
xlabel('频率 / Hz');
ylabel('|P1|');
```
---
#### 三角波的绘制与频谱分析
采用傅里叶级数展开的方式构建三角波,并对其进行频谱分析[^3]。
```matlab
%% 三角波信号
N_harmonics = 100; % 傅里叶级数中的谐波数量
y_triangle = zeros(size(t));
for n = 1:N_harmonics
harmonic_component = (-1)^((n-1)/2) * ...
(8/(pi^2*n^2)) * sin(2*pi*n*f*t);
y_triangle = y_triangle + harmonic_component;
end
figure(3);
subplot(2,1,1);
plot(t, y_triangle);
title('三角波');
xlabel('时间 / 秒');
ylabel('幅度');
% FFT 计算频谱
Y_fft_tri = fft(y_triangle);
P2_tri = abs(Y_fft_tri/L);
P1_tri = P2_tri(1:L/2+1);
P1_tri(2:end-1) = 2*P1_tri(2:end-1);
subplot(2,1,2);
plot(f_axis, P1_tri);
title('三角波频谱');
xlabel('频率 / Hz');
ylabel('|P1|');
```
以上代码分别实现了正弦波、方波和三角波的波形绘制及其频谱分析功能。
---
阅读全文
相关推荐
















