f=4KHz,占空比为 50%的矩形脉冲信号,信号幅度为 4Vpp。 f=4KHz,占空比为 25%的矩形脉冲信号,信号幅度为 4Vpp。 f=4KHz,占空比为 50%的矩形脉冲信号,信号幅度为 3Vpp。帮我写一个matlab程序,分别画出这三种信号的频谱图
时间: 2025-01-19 14:04:32 浏览: 68
为了在MATLAB中绘制这三个不同条件下的矩形脉冲信号的频谱图,你可以使用`periodogram`函数。这里是一个简单的示例程序:
```Matlab
% 定义参数
fs = 8e3; % 采样频率,高于实际频率两倍以防混叠
freq1 = 4e3; % 频率
duty_cycle1 = 0.5; % 矩形波的占空比(第一个信号)
amplitude1 = 4; % 信号幅度 (Vpp)
freq2 = 4e3; % 第二个信号的频率保持不变
duty_cycle2 = 0.25; % 占空比变化
amplitude2 = 4; % 信号幅度
freq3 = 4e3; % 第三个信号的频率
duty_cycle3 = 0.5; % 占空比与第一个相同
amplitude3 = 3; % 第三个信号的幅度较低
% 创建时间序列
time = 0:1/fs:1/duty_cycle1; % 时间向量,考虑占空比
pulse1 = amplitude1 * duty_cycle1 * ones(size(time)); % 第一个信号
pulse2 = amplitude2 * duty_cycle2 * ones(size(time)); % 第二个信号
pulse3 = amplitude3 * duty_cycle3 * ones(size(time)); % 第三个信号
% 将信号展宽到整个周期
full_time = 0:1/fs:1;
pulse1_full = [zeros(1, floor((1-duty_cycle1)*fs)); pulse1; zeros(1, floor((1-duty_cycle1)*fs))];
pulse2_full = [zeros(1, floor((1-duty_cycle2)*fs)); pulse2; zeros(1, floor((1-duty_cycle2)*fs))];
pulse3_full = [zeros(1, floor((1-duty_cycle3)*fs)); pulse3; zeros(1, floor((1-duty_cycle3)*fs))];
% 计算并绘制频谱
figure;
subplot(2,1,1);
title('4kHz, 50%占空比, 4Vpp');
periodogram(pulse1_full, [], fs, 'yaxis');
hold on;
plot(freq1, abs(fftshift(fft(pulse1_full))),'ro'); % 绘制单个峰
subplot(2,1,2);
title(sprintf('4kHz, %.2f%%占空比, %gVpp', duty_cycle2*100, amplitude2));
periodogram(pulse2_full, [], fs, 'yaxis');
hold on;
plot(freq2, abs(fftshift(fft(pulse2_full))),'go'); % 绘制第二个信号的峰值
xlabel('Frequency (Hz)');
ylabel('|Magnitude|');
阅读全文
相关推荐


















