matlab实现ASK、FSK、PSK信号的调制与解调,需要代码
时间: 2023-12-28 18:04:55 浏览: 101
FSK,ASK,PSK调制与解调的Matlab程序
5星 · 资源好评率100%
以下是Matlab实现ASK、FSK、PSK信号的调制和解调的代码示例:
ASK调制和解调:
```matlab
clear all;
close all;
fc = 10^6; %载波频率
Tb = 1/1000; %码元长度
fs = 16*fc; %采样频率
N = 1024; %采样点数
M = 2; %调制阶数
fc1 = fc*Tb; %载波频率
t = (0:N-1)/fs; %时间坐标
A = sqrt(2); %振幅
dataIn = randi([0 M-1],1,N/2); %产生调制数据
dataSym = qammod(dataIn,M); %QAM调制
data = askmod(dataIn,A,M,Tb,fs); %ASK调制
f1 = A*cos(2*pi*fc1*t); %正弦载波
yI = data.*f1; %信号的I路分量
y = yI; %ASK信号
demod = askdemod(y,Tb,fs,fc,M,A); %ASK解调
err = symerr(dataIn,demod); %误码率
disp(['ASK误码率为:',num2str(err)]);
subplot(2,1,1);
plot(t,dataSym,'bo');
title('QAM调制波形');
subplot(2,1,2);
plot(t,y,'r');
title('ASK调制波形');
```
FSK调制和解调:
```matlab
clear all;
close all;
fc = 10^6; %载波频率
Tb = 1/1000; %码元长度
fs = 16*fc; %采样频率
N = 1024; %采样点数
M = 2; %调制阶数
fc1 = fc*Tb; %载波频率
t = (0:N-1)/fs; %时间坐标
A = sqrt(2); %振幅
dataIn = randi([0 M-1],1,N/2); %产生调制数据
dataSym = qammod(dataIn,M); %QAM调制
data = fskmod(dataIn,fc,fs,Tb,1); %FSK调制
f1 = A*cos(2*pi*(fc+data)*t); %正弦载波
f2 = A*sin(2*pi*(fc+data)*t); %余弦载波
yI = real(data.*exp(1j*2*pi*fc*t)); %信号的I路分量
yQ = imag(data.*exp(1j*2*pi*fc*t)); %信号的Q路分量
y = yI.*f1 - yQ.*f2; %FSK信号
demod = fskdemod(y,fc,fs,Tb,1); %FSK解调
err = symerr(dataIn,demod); %误码率
disp(['FSK误码率为:',num2str(err)]);
subplot(2,1,1);
plot(t,dataSym,'bo');
title('QAM调制波形');
subplot(2,1,2);
plot(t,y,'r');
title('FSK调制波形');
```
PSK调制和解调:
```matlab
clear all;
close all;
fc = 10^6; %载波频率
Tb = 1/1000; %码元长度
fs = 16*fc; %采样频率
N = 1024; %采样点数
M = 4; %调制阶数
fc1 = fc*Tb; %载波频率
t = (0:N-1)/fs; %时间坐标
A = sqrt(2); %振幅
dataIn = randi([0 M-1],1,N/2); %产生调制数据
dataSym = qammod(dataIn,M); %QAM调制
data = pskmod(dataIn,M); %PSK调制
f1 = A*cos(2*pi*fc1*t); %正弦载波
f2 = A*sin(2*pi*fc1*t); %余弦载波
yI = real(data.*exp(1j*2*pi*fc*t)); %信号的I路分量
yQ = imag(data.*exp(1j*2*pi*fc*t)); %信号的Q路分量
y = yI.*f1 - yQ.*f2; %PSK信号
demod = pskdemod(y,M); %PSK解调
err = symerr(dataIn,demod); %误码率
disp(['PSK误码率为:',num2str(err)]);
subplot(2,1,1);
plot(t,dataSym,'bo');
title('QAM调制波形');
subplot(2,1,2);
plot(t,y,'r');
title('PSK调制波形');
```
以上代码中,`dataIn` 为产生的随机调制数据,`dataSym` 为QAM调制的结果,`data` 为ASK、FSK、PSK调制的结果。其中ASK调制使用 `askmod` 函数,ASK解调使用 `askdemod` 函数;FSK调制使用 `fskmod` 函数,FSK解调使用 `fskdemod` 函数;PSK调制使用 `pskmod` 函数,PSK解调使用 `pskdemod` 函数。调制完成后,通过将调制信号与正弦/余弦载波相乘得到ASK和PSK信号,通过将调制信号与频率调制信号加和后再与正弦/余弦载波相乘得到FSK信号。解调过程中,ASK和PSK信号直接进行ASK和PSK解调,FSK信号通过频率解调器进行FSK解调,计算误码率。
阅读全文