matlab绘制三角脉冲频谱图
时间: 2023-12-08 20:39:16 浏览: 383
以下是使用Matlab绘制三角脉冲频谱图的步骤:
1.定义三角脉冲函数
```matlab
function y = tripulse(t)
y = (1-abs(t)) .* rectpuls(t, 1);
end
```
2.设置参数并计算傅里叶级数
```matlab
T0 = 2*pi; % 周期
w0 = 2*pi/T0; % 基频
n = 50; % 最高谐波次数
t = linspace(-T0/2, T0/2, 1000); % 时间范围
a0 = 1/2; % 直流分量
an = zeros(1, n); % 余弦项系数
bn = zeros(1, n); % 正弦项系数
for i = 1:n
an(i) = 2/T0 * integral(@(t) tripulse(t).*cos(i*w0*t), -T0/2, T0/2);
bn(i) = 2/T0 * integral(@(t) tripulse(t).*sin(i*w0*t), -T0/2, T0/2);
end
```
3.计算合成波形
```matlab
y = a0 + sum(an.*cos((1:n)*w0*t) + bn.*sin((1:n)*w0*t));
```
4.绘制频谱图
```matlab
stem(0, a0); % 直流分量
hold on;
stem((1:n)*w0, sqrt(an.^2+bn.^2)); % 谐波分量
xlabel('频率');
ylabel('振幅');
```
完整代码如下:
```matlab
function y = tripulse(t)
y = (1-abs(t)) .* rectpuls(t, 1);
end
T0 = 2*pi; % 周期
w0 = 2*pi/T0; % 基频
n = 50; % 最高谐波次数
t = linspace(-T0/2, T0/2, 1000); % 时间范围
a0 = 1/2; % 直流分量
an = zeros(1, n); % 余弦项系数
bn = zeros(1, n); % 正弦项系数
for i = 1:n
an(i) = 2/T0 * integral(@(t) tripulse(t).*cos(i*w0*t), -T0/2, T0/2);
bn(i) = 2/T0 * integral(@(t) tripulse(t).*sin(i*w0*t), -T0/2, T0/2);
end
y = a0 + sum(an.*cos((1:n)*w0*t) + bn.*sin((1:n)*w0*t));
stem(0, a0); % 直流分量
hold on;
stem((1:n)*w0, sqrt(an.^2+bn.^2)); % 谐波分量
xlabel('频率');
ylabel('振幅');
```
阅读全文
相关推荐

















