利用matlab写一个2psk调制解调的代码,能够画出每一步的信号图形
时间: 2024-02-23 16:01:04 浏览: 22
好的,以下是一个2PSK调制解调的MATLAB代码,同时也会输出每一步的信号图形:
```matlab
% 调制信号函数
function [modulated, t] = mod_signal(data, fc, fs)
t = 0:1/fs:(length(data)-1)/fs; % 时间轴
carrier = sin(2*pi*fc*t); % 载波
modulated = zeros(size(t)); % 调制信号
for i = 1:length(data)
if data(i) == 0
modulated((i-1)*fs/fc+1:i*fs/fc) = carrier((i-1)*fs/fc+1:i*fs/fc);
else
modulated((i-1)*fs/fc+1:i*fs/fc) = -carrier((i-1)*fs/fc+1:i*fs/fc);
end
end
end
% 解调信号函数
function [demodulated, t] = demod_signal(signal, fc, fs)
t = 0:1/fs:(length(signal)-1)/fs; % 时间轴
carrier = sin(2*pi*fc*t); % 载波
demodulated = zeros(size(t)); % 解调信号
for i = 1:length(signal)
if signal(i) >= 0
demodulated(i) = 0;
else
demodulated(i) = 1;
end
end
end
% 测试数据
data = [0, 1, 1, 0, 1, 0, 0, 1, 0, 1];
fc = 10; % 载波频率
fs = 100; % 采样频率
% 调制
[modulated, t] = mod_signal(data, fc, fs);
subplot(2, 1, 1);
plot(t, modulated);
title('Modulated Signal');
xlabel('Time (s)');
ylabel('Amplitude');
% 解调
[demodulated, t] = demod_signal(modulated, fc, fs);
subplot(2, 1, 2);
stairs(t, demodulated, 'LineWidth', 2);
ylim([-0.1, 1.1]);
title('Demodulated Signal');
xlabel('Time (s)');
ylabel('Amplitude');
```
运行代码后,会先输出调制信号的图形,然后输出解调信号的图形。