基于离散傅立叶变换(DFT)的模拟调制信号数字化解调算法 DSB信号 matlab代码如何编写
时间: 2024-01-22 15:18:13 浏览: 174
以下是基于离散傅立叶变换(DFT)的DSB信号数字化解调的Matlab代码:
```matlab
% 设定采样频率和采样点数
fs = 10000;
N = 1024;
% 生成DSB信号
t = linspace(0, 1, N);
m = 2*cos(2*pi*50*t);
c = cos(2*pi*1000*t);
x = m.*c;
% DSB信号的频谱
X = fft(x);
% 设定截止频率和带宽
fc = 1000;
B = 200;
% 频域滤波器
H = zeros(1, N);
for i = 1:N
if abs(i-N/2) < fc-B/2 || abs(i-N/2) > fc+B/2
H(i) = 1;
end
end
% 滤波后的频谱
Y = X.*H;
% IDFT还原信号
y = ifft(Y);
% 绘制原始信号和解调后的信号
figure;
plot(t, x, 'b', t, y, 'r');
xlabel('Time (s)');
ylabel('Amplitude');
legend('Original Signal', 'Demodulated Signal');
```
该代码中,我们首先生成了一个频率为50Hz、载波频率为1000Hz的DSB信号。然后进行DFT,获得该信号的频谱。接着,我们设定了截止频率和带宽,通过频域滤波器H将滤波后的频谱Y计算出来。最后,我们通过IDFT将滤波后的频谱Y还原为解调后的信号y,并将原始信号和解调后的信号进行比较。
阅读全文