正弦信号重建的MATLAB代码
时间: 2023-08-06 20:11:08 浏览: 124
以下是使用MATLAB重建正弦信号的示例代码:
```matlab
% 生成正弦信号
fs = 1000; % 采样率
f = 50; % 正弦信号频率
t = 0:1/fs:1; % 时间向量
x = sin(2*pi*f*t); % 正弦信号
% 重建正弦信号
N = length(x); % 信号长度
X = fft(x); % 傅里叶变换
X_mag = abs(X); % 傅里叶变换的幅值
X_phase = angle(X); % 傅里叶变换的相位
% 取出前一半幅值和相位
X_mag_half = X_mag(1:N/2+1);
X_phase_half = X_phase(1:N/2+1);
% 重建信号
X_recon = X_mag_half .* exp(1i*X_phase_half);
x_recon = ifft(X_recon);
% 绘制原始信号和重建信号
figure;
subplot(2,1,1);
plot(t, x);
xlabel('时间 (s)');
ylabel('幅值');
title('原始信号');
subplot(2,1,2);
plot(t, x_recon);
xlabel('时间 (s)');
ylabel('幅值');
title('重建信号');
```
在这个示例中,我们首先生成一个频率为50Hz的正弦信号,并将其傅里叶变换。然后,我们只保留前一半的幅值和相位,因为傅里叶变换的输出是对称的。接下来,我们将这些幅值和相位用于重建信号,并使用ifft函数将其转换回时间域。
最后,我们绘制原始信号和重建信号以进行比较。
阅读全文