📄 psk.txt
字号:
%程序设计PSK的一些说明:
%1)在调制时,我人为的将用cos信号来表示一,注意解调时将cos信号变成二进制信号的一码。
%2)在接受端解调的时候,我采用的是将本地振荡信号延伸到与信号一样长后进行解调的。
%
clear all
close all
N=input('input N='); %控制产生N个序列
d=rand(1,N)>=0.5; %随机生成N个1,0序列
bits=[d,zeros(1,7-(length(d)-fix(length(d)/7)*7))];%将在不够指定位数添0,对信号进行7位扩展完成
datastream=[]; %这是信道编码
n=fix(length(bits)/7);
for k=1:n
temp=bits((k-1)*7+1:k*7);
datastream=[datastream,temp,rem(sum(temp),2)];
end %信道编码结束
t=linspace(0,0.001,160); %调制信号
fc=1000;
y1=cos(2*pi*fc*t); %fc为调制频率
y2=sin(2*pi*fc*t);
result=[]; %信号开始调制
for j=1:length(datastream);
if datastream(j)==1
result=[result,datastream(j)*y1]; %信号调制结束
else
result=[result,1*y2];
end
end
figure(1)
plot(1:length(result),result),title('PSK调制后的波形'); %输出调制信号的波形,以便于进行与接收端的信号进行比较
receivesignal=awgn(result,30); %这是信号在信道中的高斯白噪声
figure(2)
plot(1:length(receivesignal),receivesignal),title('PSK信号在信道中的波形图')%这是信号在信道中的高斯白噪声的波形
t=linspace(0,0.001,160); %本地震荡信号
fc=1000;
ys=cos(2*pi*fc*t); %本地fc为调制频率
d1=rand(1:length(datastream))>0;
result1=[];
for j=1:length(datastream);
result1=[result1,d1(j)*ys];
end
figure(3)
plot(1:length(result1),result1),title('本地载波信号')
resignal=[]; %本地解调
for k=1:length(receivesignal);
resignal=[resignal,result1(k)*receivesignal(k)];
end
figure(4)
plot(1:length(resignal),resignal),title('解调信号波形')%输出本地解调波形
load num
signal=filter(Num1,1,resignal);title('接收信号*本地载波信号');
figure(5)
plot(1:length(signal),signal),title('包络信号');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -