通信原理實踐(二)——幅度調制


一、幅度調制,並畫出時域和頻域波形

1、代碼如下:

function [ p_n ] = AM_func( N,fs,fm,Am,fc,Ac,Ma )
%UNTITLED 此處顯示有關此函數的摘要
%   此處顯示詳細說明
% N = 3000; % 長度
% fs = 48e3; % 采樣率
% fm = 300; % 調制信號頻率
% Am = 0.5; % 調制信號幅度
% fc = 8e3; % 載波頻率
% Ac = 1; % 載波幅度
% A0      %直流分量

A0 = Am / Ma;

%%
%時域波形,第一小題
t = (0:N-1)'/fs; % 時間t
m_t = Am*sin(2*pi*fm*t); % 產生調制信號
c_t = Ac*cos(2*pi*fc*t); % 產生載波信號
s_t = (m_t + A0) .* c_t; % 調制

figure()
subplot(1,3,1);
plot(t, s_t , 'b'); % 繪波形
xlabel('time');
ylabel('amplitude');
title('時域波形');

%%
%繪制功率譜,第二小題
L = length(s_t);               % 取得序列長度
u = fftshift(fft(s_t ));       % 離散傅里葉變換,求頻譜
u_pow = pow2db(abs(u).^2);     % 幅度轉為dB
w = (0:L-1)'*fs/L - 1/2*fs;    % 橫坐標-頻率

subplot(1,3,2);
plot(w, u_pow);
grid on;
xlabel('frequency(Hz)');
ylabel('magnitude(dB)');
title('功率譜');

 

2、結果分析

    由於已經封裝成一個函數,按照函數說明進行參數設置即可完成幅度調制的功能。波形圖如下:

AM_func(3000,48e3,300,0.5,8e3,1,0.3)

image

 

二、頻率譜分析——計算AM調制效率

1、代碼展示:

    代碼需要放在上面代碼的后面,或者基於上者的數據

u_pow_decsend = sort( abs(u),'descend');
p_all = sum( abs(u).^2 );
p_main = p_all - max(abs(u)).^2 * 2;
p_n = p_main / p_all * 100;

2、結果分析:

   一般來說AM調制最大調制效率為33%,且是在Ma=1的情況下取得。

 

三、非相干解調——包絡檢波

1、代碼展示

    代碼需要放在上面代碼的后面,或者基於上者的數據

b = fir1(80, 2000/(fs/2));               % 設計截止頻率為2KHz的FIR低通濾波器,如何截止頻率設為300,則無法顯示600Hz的波形,即可以檢驗出過調制的波形
s_t = s_t .* (s_t > 0);
filtered_t = filter(b,1,s_t);        % 濾波
demod_t = filtered_t - sum(filtered_t)/length(filtered_t);

subplot(1,3,3);
plot(t, demod_t , 'b'); % 繪制解調波形
xlabel('time');
ylabel('amplitude');
title('包絡檢波之后的波形');

2、結果分析

    這邊的濾波器需要設計好,兩個參數的后者的范圍是0~1,表示頻率對於fs/2的歸一化頻率。

image

 

四、相干解調

1、代碼展示

    已封裝成函數,可直接調用

function [] = jt_func( N,fs,fm,Am,fc,Ac,Ma,fc_c,phi_c )
%UNTITLED5 此處顯示有關此函數的摘要
%   此處顯示詳細說明
% %發送端參數聲明
% N = 3000; % 長度
% fs = 48e3; % 采樣率
% fm = 300; % 調制信號頻率
% Am = 0.5; % 調制信號幅度
% fc = 8e3; % 載波頻率 
% Ac = 1; % 載波幅度
% Ma = 10;

% 
% %接收端參數聲明
% fc_c = 8e3;  % 本地振盪器頻率
% phi_c = 0;   % 本地振盪器初相

%%
%發送端產生波形
A0 = Am / Ma;
t = (0:N-1)'/fs; % 時間t
m_t = Am*sin(2*pi*fm*t); % 產生調制信號
c_t = Ac*cos(2*pi*fc*t); % 產生載波信號
s_t = (m_t + A0) .* c_t; % 調制

%%
%接收端解調波形
r_t = s_t;
figure()
subplot(1,3,1);
plot(t, r_t , 'b'); % 繪波形
xlabel('time');
ylabel('amplitude');
title('時域波形');

c_t = cos(2*pi*fc_c*t+phi_c); % 本地振盪器波形
mix_t = r_t .* c_t; % 混頻
subplot(1,3,2);
plot(t, mix_t , 'b');   % 繪制混頻波形
xlabel('time');
ylabel('amplitude');
title('混頻后的波形');

b = fir1(20, fc/(fs/2)); % 設計截止頻率為fcFIR低通濾波器
filtered_t = filter(b,1,mix_t); % 濾波
demod_t = filtered_t - sum(filtered_t)/length(filtered_t);
% 去除DC分量
subplot(1,3,3);
plot(t, demod_t ,'b' ); % 繪制解調波形
xlabel('time');
ylabel('amplitude');
title('濾波后的波形');

end

 

2、結果分析

image

 

五、模擬幅度調制、解調過程——音頻

1、代碼如下:

    主要是播放聲音這個函數使用audioplayer,可以停止聲音播放,否則。。。。。

clc,clear;

[m_t,fs] = audioread('MayDay.mp3');   % 得到音頻信號以及采樣率

N = length(m_t);                      % 調制信號長度
Am = max(m_t);                        % 音頻信號最大幅度
fc = 200e3;                           % 載波頻率
Ac = 1;                               % 載波幅度
Ma = 0.3; 
A0 = Am / Ma;

t = (0:N-1)'/fs; % 時間t
c_t = Ac*cos( 2*pi*fc*t ); % 產生載波信號
s_t = (m_t + A0) .* c_t; % 調制

r_t = s_t;
figure()
subplot(1,3,1);
plot(t, r_t , 'b'); % 繪波形
xlabel('time');
ylabel('amplitude');
title('時域波形');

c_t = cos(2*pi*fc*t); % 本地振盪器波形
mix_t = r_t .* c_t; % 混頻
subplot(1,3,2);
plot(t, mix_t , 'b');   % 繪制混頻波形
xlabel('time');
ylabel('amplitude');
title('混頻后的波形');

b = fir1(20,fs/4/(fs/2)); % 設計截止頻率為fcFIR低通濾波器
filtered_t = filter(b,1,mix_t); % 濾波
demod_t = filtered_t - sum(filtered_t)/length(filtered_t);
% 去除DC分量
subplot(1,3,3);
plot(t, demod_t ,'b' ); % 繪制解調波形
xlabel('time');
ylabel('amplitude');
title('濾波后的波形');

player = audioplayer(demod_t, fs);
play(player);

 

2、結果展示:

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM