AM,DSB,FM调制与解调matlab
时间: 2024-01-16 09:01:48 浏览: 184
以下是AM、DSB和FM调制与解调的MATLAB示例:
1. AM调制与解调:
```matlab
% AM调制
fc = 1000; % 载波频率
fm = 100; % 基带信号频率
t = 0:0.001:1; % 时间范围
m = sin(2*pi*fm*t); % 基带信号
c = cos(2*pi*fc*t); % 载波信号
x = (1 + 0.5*m).*c; % AM调制信号
% AM解调
y = x.*c; % 解调信号
[b, a] = butter(6, fc/(2*fm)); % 设计低通滤波器
z = filtfilt(b, a, y); % 过滤解调信号
demodulated_signal = z / max(abs(z)); % 解调信号归一化
% 绘制图形
subplot(3, 1, 1);
plot(t, m);
title('基带信号');
subplot(3, 1, 2);
plot(t, x);
title('AM调制信号');subplot(3, 1, 3);
plot(t, demodulated_signal);
title('AM解调信号');
```
2. DSB调制与解调:
```matlab
% DSB调制
fc = 1000; % 载波频率
fm = 100; % 基带信号频率
t = 0:0.001:1; % 时间范围
m = sin(2*pi*fm*t); % 基带信号
c = cos(2*pi*fc*t); % 载波信号
x = m.*c; % DSB调制信号
% DSB解调
y = x.*c; % 解调信号
[b, a] = butter(6, fc/(2*fm)); % 设计低通滤波器
z = filtfilt(b, a, y); % 过滤解调信号
demodulated_signal = z / max(abs(z)); % 解调信号归一化
% 绘制图形
subplot(3, 1, 1);
plot(t, m);
title('基带信号');
subplot(3, 1, 2);
plot(t, x);
title('DSB调制信号');
subplot(3, 1, 3);
plot(t, demodulated_signal);
title('DSB解调信号');
```
3. FM调制与解调:
```matlab
% FM调制
fc = 1000; % 载波频率
fm = 100; % 基带信号频率
t = 0:0.001:1; % 时间范围
m = sin(2*pi*fm*t); % 基带信号
kf = 50; % 调频系数
x = cos(2*pi*fc*t + kf*cumsum(m)); % FM调制信号
% FM解调
[b, a] = butter(6, fc/(2*fm)); % 设计低通滤波器
z = filtfilt(b, a, x); % 过滤FM调制信号
demodulated_signal = diff(z); % 解调信号
demodulated_signal = [demodulated_signal(1), demodulated_signal]; % 补充第一个样本
demodulated_signal = demodulated_signal / max(abs(demodulated_signal)); % 解调信号归一化
% 绘制图形
subplot(3, 1, 1);
plot(t, m);
title('基带信号');
subplot(3, 1, 2);
plot(t, x);
title('FM调制信号');
subplot(3, 1, 3);
plot(t, demodulated_signal);
title('FM解调信号');
```
阅读全文