?? 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 + -