1.

%生成AM信号
N = 3000; % 长度
fs = 48e3; % 采样率
fm = 300; % 调制信号频率
Am = 0.5; % 调制信号幅度
fc = 8e3; % 载波频率
Ac = 1; % 载波幅度
A0 = 5/3; % 直流分量
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; % 调制
plot(t, s_t , 'b'); % 绘波形
xlabel('time');
ylabel('amplitude');
%读取音频文件
[y1,Fs] = audioread('MayDay.mp3');%读文件
t1=0:1/Fs:(length(y1)-1)*(1/Fs);
figure(1)
plot(t1,y1);xlabel('t'),ylabel('幅度')
title('mayday'),axis([0,(length(y1)-1)*(1/Fs),-0.4,0.5])
%sound(y1,Fs);%发出声音


%生成AM信号
N = length(y1); % 长度
fs = Fs; % 采样率
fc = 200e3; % 载波频率
Ac = 1; % 载波幅度
Ma = 0.3;%调制系数
y11=abs(y1);
max_y11=max(y11);
A0 = max_y11/Ma; % 直流分量
t = (0:N-1)'/fs; % 时间t
c_t = Ac*cos(2*pi*fc*t); % 产生载波信号
s_t = (y11 + A0) .* c_t; % 调制
figure(2)
plot(t, s_t , 'b'); % 绘波形
xlabel('time');
ylabel('amplitude');

 

2.

%AM信号解调
fs = 48e3; % 采样率
fc = 8e3; % 本地振荡器频率
phi_c = 0; % 本地振荡器初相
fm = 300; % 调制信号频率
b = fir1(20, fc/(fs/2)); % 设计截止频率为fc的FIR低通滤波器
r_t = s_t;
N = length(r_t); % 序列长度
t = (0:N-1)'/fs; % 时间t
c_t = 2*cos(2*pi*fc*t+phi_c); % 本地振荡器波形
figure(1)
plot(t, c_t , 'b'); % 绘制本地振荡器波形
mix_t = r_t .* c_t; % 混频
figure(2)
plot(t, mix_t , 'b'); % 绘制混频波形
filtered_t = filter(b,1,mix_t); % 滤波
figure(3)
plot(t, filtered_t , 'b'); % 绘制解调波形
demod_t = filtered_t - sum(filtered_t)/length(filtered_t);
% 去除DC分量
figure(4)
plot(t, demod_t , 'b'); % 绘制去除直流分量后的解调波形
xlabel('time');
ylabel('amplitude');

3.两种绘制功率谱的方式

%绘制功率谱
fs = 48e3; % 采样率 
L = length(s_t); % 取得序列长度 
u = fft(s_t ); % 离散傅里叶变换,求频谱 
u_pow = 10*log10(abs(u).^2); % 幅度转为dB 
w = (0:L-1)'*fs/L; % 横坐标-频率 
plot(w, u_pow); % 绘图 
grid on; 
xlabel('frequency(Hz)'); 
ylabel('magnitude(dB)');
fs = 48e3; % 采样率 
psd(spectrum.periodogram, s_t, 'Fs', fs, 'CenterDC', 1); % 谱估计

4.

%产生一个低通滤波器,求幅度响应
fs = 48e3; % 采样率 
fcut = 5e3; % 截止频率,对于butter来说即-3dB点 
filterN = 4; % Butterworth 阶数 
[b,a] = butter(filterN, fcut/(fs/2)); % 设计滤波器 
freqz(b, a, 512, fs); % 查看频响 
x = zeros(128,1); % 产生delta序列 
x(1) = 1; 
y = filter(b, a, x); % 滤波,获取其冲激响应 
u = fft(y); % 离散傅里叶变换,求频谱 
u_pow = 20*log10(abs(u)); % 幅度转为dB 
w = (0:length(u)-1)'*fs/length(u); % 横坐标-频率 
figure; 
plot(w,u_pow); % 绘图 
grid on; % 显示网格 
xlabel('frequency(Hz)'); 
ylabel('magnitude(dB)');

5.

%相干解调
fs = 48e3; % 采样率
fc = 4e3; % 本地振荡器频率
phi_c = 0; % 本地振荡器初相
fm = 110; % 调制信号频率
b = fir1(20, fc/(fs/2)); % 设计截止频率为fc
% 的FIR低通滤波器
r_t = s_t;
N = length(r_t); % 序列长度
t = (0:N-1)'/fs; % 时间t
c_t = cos(2*pi*fc*t+phi_c); % 本地振荡器波形
mix_t = r_t .* c_t; % 混频
filtered_t = filter(b,1,mix_t); % 滤波
demod_t = filtered_t - sum(filtered_t)/length(filtered_t);
% 去除DC分量
plot(t, demod_t , 'b'); % 绘制解调波形
xlabel('time');
ylabel('amplitude');

6.

%产生SSB信号
m_t2 = hilbert(m_t);
c_t = cos(2*pi*fc*t); % 本地振荡器波形
c_t2 = sin(2*pi*fc*t); % 本地振荡器波形
ssb_t1=m_t.*c_t+m_t2.*c_t2;%下边带
ssb_t2=m_t.*c_t-m_t2.*c_t2;%上边带
figure(1)
plot(t,ssb_t1)
title('SSB信号下边带')
figure(2)
plot(t,ssb_t2)
title('SSB信号上边带')

u1 = fftshift(fft(ssb_t1 )); % 离散傅里叶变换,求频谱
u1_pow = pow2db(abs(u1).^2); % 幅度转为dB
w = (0:L-1)'*fs/L - 1/2*fs; % 横坐标-频率
figure(3)
plot(w, u1_pow);
title('SSB信号下边带功率谱')
grid on;
xlabel('frequency(Hz)');
ylabel('F(w)');

u2 = fftshift(fft(ssb_t2 )); % 离散傅里叶变换,求频谱
u2_pow = pow2db(abs(u2).^2); % 幅度转为dB
w = (0:L-1)'*fs/L - 1/2*fs; % 横坐标-频率
figure(4)
plot(w, u2_pow);
title('SSB信号上边带功率谱')
grid on;
xlabel('frequency(Hz)');
ylabel('F(w)');

7.

%包络检波
x4=hilbert(s_t);
demod_t = x4 - sum(x4)/length(x4);
figure(1)
plot(t,demod_t);
title('解调信号')
sound(demod_t,fs)

 

posted on 2015-10-02 19:07  planet  阅读(1568)  评论(0编辑  收藏  举报