用代码实现用matlab画出下列信号的波形和功率谱:x(t)=1.2sin(2π400t)[1+0.2cos(2π50t)]+0.8sin[((2π900t))+sin(2π30t)]+2.5sin(2π900t)+p(t)+y(t);其中,采样频率为6 400 Hz,采样点数为1 024,采样数据序列时长为0.16 s,pt)是脉宽为两个采样周期,幅值为3,中心分别位于0.04 s和0.12s处的三角脉冲,yt)是均值为零,方差为0.01的随机噪声;
时间: 2023-06-04 16:06:25 浏览: 205
可以使用以下代码实现:
% 设置采样频率、采样点数、采样数据序列时长
fs = 6400;
N = 1024;
T = 0.16;
% 生成时间序列t
t = linspace(0, T, N);
% 计算信号x(t)的值
x = 1.2 * sin(2*pi*400*t) .* (1 + 0.2*cos(2*pi*50*t)) ...
+ 0.8 * sin(2*pi*900*t .* sin(2*pi*30*t)) ...
+ 2.5 * sin(2*pi*900*t);
% 生成三角脉冲pt和随机噪声yt
pt = zeros(1, N);
pt(round(0.04*fs)+1:round(0.06*fs)) = 3;
pt(round(0.12*fs)+1:round(0.14*fs)) = 3;
yt = sqrt(0.01) * randn(1, N);
% 计算信号p(t)和y(t)
p = x .* pt;
y = x + yt;
% 绘制信号x(t)的波形
figure;
subplot(2, 2, 1);
plot(t, x);
title('x(t)');
% 计算信号x(t)的功率谱
X = abs(fft(x));
X = X(1:N/2).^2 / (N*fs);
f = fs*linspace(0, 0.5, N/2);
% 绘制信号x(t)的功率谱
subplot(2, 2, 2);
plot(f, X);
xlim([0 1000]);
title('P_x(f)');
% 绘制信号p(t)的波形
subplot(2, 2, 3);
plot(t, p);
title('p(t)');
% 计算信号p(t)的功率谱
P = abs(fft(p));
P = P(1:N/2).^2 / (N*fs);
f = fs*linspace(0, 0.5, N/2);
% 绘制信号p(t)的功率谱
subplot(2, 2, 4);
plot(f, P);
xlim([0 1000]);
title('P_p(f)');
% 显示图形
sgtitle('信号x(t)和p(t)的波形及功率谱');
阅读全文