注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mr.Right

不顾一切的去想,于是我们有了梦想。脚踏实地的去做,于是梦想成了现实。

 
 
 

日志

 
 
关于我

人生一年又一年,只要每年都有所积累,有所成长,都有那么一次自己认为满意的花开时刻就好。即使一时不顺,也要敞开胸怀。生命的荣枯并不是简单的重复,一时的得失不是成败的尺度。花开不是荣耀,而是一个美丽的结束,花谢也不是耻辱,而是一个低调的开始。

网易考拉推荐

FM调制解调matlab  

2013-03-17 09:55:49|  分类: 学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
真诚感谢国外的作者共享他的代码。本人贴出来的目的也是希望能够节约初学者的摸索时间,对大家有所帮助!

clear all;
close all;
clc;

%% Frequency MODULATION of Triangular Signal
fs = 10e3; % 10 KHz
ts = 1./fs;
t = -0.04:ts:0.04;  % message signal time index
Ta = 0.01;
fc = 200;                                                           % Frequency of carrier

%% genetate message signal
t1 = -0.02:ts:0; t2 = 0:ts:0.02;
m1 = 1 - abs((t1 + Ta)/Ta); %  plot(t1, m1), peak of the triangular pulse at t = -Ta = -0.01
m1 = [zeros([1 200]), m1, zeros([1 400])];
m2 = 1 - abs((t2 - Ta)/Ta); % plot(t2, m2), peak of the triangular pulse at t = Ta = 0.01
m2 = [zeros([1 400]), m2, zeros([1 200])];
msg = m1 - m2; % message signal, total 801 points, plot(t, msg)

%% MODULATION
kf = 160*pi;
m_int = kf*ts*cumsum(msg);              % Integrating Msg
fm = cos(2*fc*pi*t + m_int);                   % fm = cos(2*pi*fc*t + integral(msg))

%% DEMODULATION 
% step1: Using Differentiator
dem = diff(fm);  
dem = [0, dem]; % make length(dem) = length(fm)
rect_dem = abs(dem); % obtain positive frequency part
% step2: low pass filter
N = 80;                                                             % Order of Filter
Wn = 0.01;                                                    % Pass Band Edge Frequency.
b = fir1(N, Wn);                                             % Return Numerator of Low Pass FIR filter
a = 1;                                                                % Denominator of Low Pass FIR Filter
rec = filter(b, a, rect_dem);

%% Finding frequency Response of Signals

NFFT = length(t);
NFFT = 2^ceil(log2(NFFT));
f = (-NFFT/2:NFFT/2-1)/(NFFT*ts); % NFFT*ts = Δf

mF = fftshift(fft(msg, NFFT));               % Frequency Response of Message Signal, m代表message F代表频域
fmF = fftshift(fft(fm, NFFT));             % Frequency Response of FM Signal
rect_demF = fftshift(fft(rect_dem, NFFT)); % Frequency Response of Rectified FM Signal
recF = fftshift(fft(rec, NFFT));           % Frequency Response of Recovered Message Signal


%% Plotting signal in time domain
figure;
subplot(2,1,1);
plot(t, msg);
title('Message Signal');
xlabel('{\it t} (sec)');
ylabel('m(t)');
grid;

subplot(2,1,2);
plot(t, fm);
title('FM');
xlabel('{\it t} (sec)');
ylabel('FM');
grid;

figure;
subplot(2,1,1);
plot(t, rect_dem);
title('Rectified FM');
xlabel('{\it t} (sec)');
ylabel('dem')
grid;

subplot(2,1,2);
plot(t, rec);
title('Recovered Signal');
hold on; yLim = get(gca, 'ylim'); 
plot([t(N/2) t(N/2)], yLim, 'r:', 'LineWidth', 2); hold off;
xlabel('{\it t} (sec)');
ylabel('m(t)');
grid;

%% Plotting Freq Response of Signals
figure;
subplot(2,2,1);
plot(f, abs(mF));
title('Freq Response of MSG');
xlabel('f(Hz)');
ylabel('M(f)');
grid;
axis([-600 600 0 200]);

subplot(2,2,2);
plot(f, abs(fmF));
title('Freq Response of FM');
grid;
xlabel('f(Hz)');
ylabel('C(f)');
axis([-600 600 0 300]);

subplot(2,2,3);
plot(f, abs(rect_demF));
title('Freq Response of Rectified FM');
xlabel('f(Hz)');
ylabel('magnitude(f)');
grid;
axis([-600 600 0 100]);

subplot(2,2,4);
plot(f, abs(recF));
title('Freq Response of Recovered Signal');
xlabel('f(Hz)');
ylabel('M(f)');
grid;
axis([-600 600 0 100]);
  评论这张
 
阅读(2099)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016