各位大佬,我在單音信號的基礎上實作雙音信號的SSB調制與解調,求解一下解調代碼這里應該怎么改?
clc;clear all;close all; %洗掉所有源代碼及程式結果
%%%========================基帶信號引數設定========================%%%
Am1 = 2; %Am1為第一基帶信號幅度/V
Am2 = 3; %Am2為第二基帶信號幅度/V
fm1 = 100; %fm1為第一基帶信號頻率/Hz
fm2 = 200; %fm2為第二基帶信號頻率/Hz
fc = 300; %fc為載波信號的頻率/Hz
Fs = 4*fc; %Fs為采樣頻率/Hz
t = 0:1/(4*fc):1-1/(4*fc); %t為調制信號時間的離散取值/s
Mt1 = Am1*cos(2*pi*fm1*t); %生成第一基帶信號
Fmt1 = fft(Mt1); %對基帶信號進行傅里葉變換
f1 = (0:length(Fmt1)-1)*Fs/length(Fmt1); %頻域內頻率取值
n1 = length(Mt1);
fshift1 = (-n1/2:n1/2-1)*(length(f1)/n1); %進行頻譜搬移
Ffmt1 = fftshift(Fmt1);
Mt2 = Am2*cos(2*pi*fm2*t); %生成第二基帶信號
Fmt2 = fft(Mt2); %對基帶信號進行傅里葉變換
f2 = (0:length(Fmt2)-1)*Fs/length(Fmt2); %頻域內頻率取值
n2 = length(Mt2);
fshift2 = (-n2/2:n2/2-1)*(length(f2)/n2); %進行頻譜搬移
Ffmt2 = fftshift(Fmt2);
Mt = Mt1+Mt2; %合成基帶信號
Fmt = fft(Mt); %對基帶信號進行傅里葉變換
f = (0:length(Fmt)-1)*Fs/length(Fmt); %頻域內頻率取值
n3 = length(Mt);
fshift = (-n3/2:n3/2-1)*(length(f)/n3); %進行頻譜搬移
Ffmt = fftshift(Fmt);
%%%========================載波信號引數設定========================%%%
Cm = 5; %Ac為載波信號的幅度/V
Ct = Cm*cos(2*pi*fc*t); %生成載波信號
Ct0 = Cm*sin(2*pi*fc*t); %生成載波信號正弦變換
Fct = fft(Ct); %對載波信號進行傅里葉變換
f2 = (0:length(Fct)-1)*4*fc/length(Fct); %頻域內頻率取值
n = length(Ct);
fshift2 = (-n/2:n/2-1)*(length(f2)/n); %進行頻譜搬移
Ffct = fftshift(Fct);
%%%==================第一基帶信號時域波形與頻譜圖==================%%%
figure (1)
subplot(2,2,1);
plot(t,Mt1,'b-')
xlabel('時間t/s');ylabel('幅度A/V');title('第一基帶信號時域波形圖')
axis([0 1 -3 3])
subplot(2,2,2);
plot(fshift1,abs(Ffmt1),'g-')
xlabel('頻率f/Hz');ylabel('幅度/dB');title('第一基帶信號頻域波形圖')
axis([-200 200 0 1500])
%%%==================第二基帶信號時域波形與頻譜圖==================%%%
subplot(2,2,3);
plot(t,Mt2,'b-')
xlabel('時間t/s');ylabel('幅度A/V');title('第二基帶信號時域波形圖')
axis([0 1 -4 4])
subplot(2,2,4);
plot(fshift2,abs(Ffmt2),'g-')
xlabel('頻率f/Hz');ylabel('幅度/dB');title('第二基帶信號頻域波形圖')
axis([-300 300 0 2000])
%%%==================合成基帶信號時域波形與頻譜圖==================%%%
figure (2)
subplot(2,2,1);
plot(t,Mt,'b-')
xlabel('時間t/s');ylabel('幅度A/V');title('合成基帶信號時域波形圖')
axis([0 1 -6 6])
subplot(2,2,2);
plot(fshift,abs(Ffmt),'g-')
xlabel('頻率f/Hz');ylabel('幅度/dB');title('合成基帶信號頻域波形圖')
axis([-300 300 0 2000])
%%%====================載波信號時域波形與頻譜圖====================%%%
subplot(2,2,3);
plot(t,Ct,'b-')
xlabel('時間t/s');ylabel('幅度A/V');title('載波信號時域波形圖')
axis([0 1 -6 6])
subplot(2,2,4);
plot(fshift2,abs(Ffct),'g-')
xlabel('頻率f/Hz');ylabel('幅度E/V');title('載波信號頻域波形圖')
axis([-400 400 0 4000])
%%%=======================已調及解調信號生成=======================%%%
St = Mt.*Ct+imag(hilbert(Mt)).*Ct0; %生成已調信號的下邊帶信號
Fst = fft(St);
Fst = abs(Fst(round(1:length(Fst)/2+1))); %已調信號的頻譜
f3 = [0:length(Fst)-1]*Fs/length(Fst)/2; %已調信號頻譜的頻率
Jt = ssbdemod(St,fc,Fs); %解調,利用ssbdemod函式實作低通濾波器的作用
Fjt = fft(Jt);
Fjt = abs(Fjt(round(1:length(Fjt)/2+1))); %解調信號的頻譜
f4 = [0:length(Fjt)-1]*Fs/length(Fjt)/2; %解調信號頻譜的頻率
%%%====================已調信號時域波形與頻譜圖====================%%%
figure (3)
subplot(2,2,1);
plot(t,St,'b-')
xlabel('時間t/s');ylabel('幅度A/V');title('LSB已調信號下邊帶時域波形圖')
axis([0 1 -15 15])
subplot(2,2,2);
plot(f3,Fst,'g-')
xlabel('頻率f/Hz');ylabel('幅度E/V');title('LSB已調信號下邊帶頻域波形圖')
axis([0 400 0 10000])
%%%====================解調信號時域波形與頻譜圖====================%%%
subplot(2,2,3);
plot(t,Jt,'b-')
xlabel('時間t/s');ylabel('幅度A/V');title('解調信號時域波形圖')
axis([0 1 -15 15])
subplot(2,2,4);
plot(f4,Fjt,'g-')
xlabel('頻率f/Hz');ylabel('幅度E/V');title('解調信號頻域波形圖')
axis([0 400 0 10000])
%%%=====================接收信號加窗處理及觀察=====================%%%
N1 = length(St);
w_han1 = (boxcar(N1))';
N2 = length(Fst);
w_han2 = (boxcar(N2))';
J1 = St.*w_han1;
J2 = abs(Fst).*w_han2;
figure (4)
subplot(2,1,1)
plot(t,J1,'b-')
xlabel('時間t/s');ylabel('幅度A/V');title('接收加窗后信號下邊帶時域波形圖')
axis([0 1 -15 15])
subplot(2,1,2)
plot(f3,J2,'g-')
xlabel('頻率f/Hz');ylabel('幅度E/V');title('接收加窗后調制信號下邊帶頻域波形圖')
axis([0 400 0 10000])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/12068.html
標籤:網絡通信
