给出第四题对应的完整代码
时间: 2024-09-12 08:06:13 浏览: 39
第四题的内容是关于生成和比较方波信号(square)和正弦信号(sin)的时域波形及幅度谱。下面提供的是MATLAB实现这一任务的可能代码:
```matlab
% 定义采样时间和范围
t = -5:0.05:5;
% 方波信号生成
square_wave = square(2 * pi * t);
% 正弦信号生成
sine_wave = sin(2 * pi * 1 * t);
% 绘制方波和正弦波的时间波形
figure;
subplot(2, 2, 1);
plot(t, square_wave);
title('Square Waveform');
xlabel('Time (sec)');
ylabel('Amplitude');
subplot(2, 2, 2);
plot(t, sine_wave);
title('Sine Waveform');
xlabel('Time (sec)');
ylabel('Amplitude');
% 方波和正弦波的傅里叶变换获取其频谱
fs = 1 / 0.05; % Sampling frequency
L = length(t); % Length of the signal
Y_square = fft(square_wave, L);
P2_square = abs(Y_square/L);
P1_square = P2_square(1:L/2+1);
P1_square(2:end-1) = 2*P1_square(2:end-1);
f_square = fs*(0:(L/2))/L;
Y_sine = fft(sine_wave, L);
P2_sine = abs(Y_sine/L);
P1_sine = P2_sine(1:L/2+1);
P1_sine(2:end-1) = 2*P1_sine(2:end-1);
f_sine = fs*(0:(L/2))/L;
% 绘制方波和正弦波的幅度谱
subplot(2, 2, 3);
plot(f_square, P1_square);
title('Square Wave Magnitude Spectrum');
xlabel('Frequency (Hz)');
ylabel('|P1|');
subplot(2, 2, 4);
plot(f_sine, P1_sine);
title('Sine Wave Magnitude Spectrum');
xlabel('Frequency (Hz)');
ylabel('|P1|');
```
注意:上述代码仅作为示例参考,在实际使用前需要验证其正确性和完整性。特别是对于`square`函数的应用,请确认输入参数的适当调整来符合题目要求中的特定周期或占空比需求。此外,对信号的幅度谱的计算采用了快速傅立叶变换(`fft`)函数来进行。
阅读全文