matlab code folding,Matlab FM Demodulation and Get Rid of Phase Folding Effect

原文:

I have a matlab code to Frequency modulation and demodulation a signal. My code is work well for modulation part. My message signal is m and modulated signal is u, code plot the message signal and its integral in one graph for plotting 1.

Then signal modulated with carrier and program plots the modulated signal in time domain for plotting 2.

After that, by the help of some code blocks program find the frequency spectrum of modulated signal and message signal to plot graph of them for plotting 3.

In demodulation part program make some fundamental calculation for FM detection, then to obtain message signal it uses filter.

Last part program plots the graph of recovered signal with message signal to compare them.

I summarized all code because ı do not know whre is the problem.

My problem about plotting 3 when I make zoom graph 3 I see some phase foldings or like it.Graph is not symmetric according to y-axis.

I did not solve this problem, I research about them and I decided to use unwrap(). Although I tried a lot, I could not be successful. How can I get rid of this phase folding with unwrap() function. Thank you.

My matlab code is ;

ts = 0.0001;% Sampling interval

t0 = 0.15; % Duration

t = 0:ts:t0;% define time vector

%% OTHER PARAMETERS

fc = 200; % Carrier signal frequency

kf =50; % Frequency deviation constant

fs = 1/ts; % Sampling frequency

%% MESSAGE SIGNAL SIMPLY

m = 1*(t=t0/3);

%% Integration of m

int_m(1) = 0;

for k =1:length(m)-1

int_m(k+1) = int_m(k) + m(k)*ts;

end

%% PLOTTING 1

figure; subplot(211); % Message signal

plot(t,m);grid on;xlabel('time');ylabel('Amplitude');

title('m(t)');ylim([-3 2]);

subplot(212);plot(t,int_m);% Integral of message signal

grid on; xlabel('time');ylabel('Amplitude');title('integral of m(t)');

ylim([-0.07 0.07]);

%% FM MODULATED SIGNAL

u = cos(2*pi*fc*t + 2*pi*kf*int_m);

%% PLOTTING 2

figure; plot(t,u); % Modulated signal in time domain

grid on;xlabel('time');

ylabel('Amplitude');title('FM :u(t)');

ylim([-1.2 1.2]);

%% FINDING FREQUENCY SPECTRUM AND PLOTTING 3

% Frequency spectrum of m(t)

f=linspace(-1/(2*ts),1/(2*ts),length(t));

M=fftshift(fft(m))./length(t); % Taking fourier transform for m(t)

U=fftshift(fft(u))./length(t); % Taking fourier transform for u(t)

figure;subplot(211); % Frequence spectrum of m(t)

plot(f,abs(M)); grid;

xlabel('Frequency in Hz');xlim([-500 500]);

ylabel('Amplitude');title('Double sided Magnitude spectrum of m(t)');

subplot(212);plot(f,abs(U)); % Frequency spectrum of u(t)

grid;xlabel('Frequency in Hz');xlim([-500 500]);

ylabel('Amplitude');title('Double sided Magnitude spectrum of u(t)');

%% DEMODULATION (Using Differentiator)

dem = diff(u);

dem = [0,dem];

rect_dem = abs(dem);

%% Filtering out High Frequencies

N = 80; % Order of Filter

Wn = 1.e-2; % Pass Band Edge Frequency.

a = fir1(N,Wn);% Return Numerator of Low Pass FIR filter

b = 1; % Denominator of Low Pass FIR Filter

rec = filter(a,b,rect_dem);

%% Finding frequency Response of Signals

fl = length(t);

fl = 2^ceil(log2(fl));

f = (-fl/2:fl/2-1)/(fl*1.e-4);

mF = fftshift(fft(m,fl)); % Frequency Response of Message Signal

fmF = fftshift(fft(u,fl)); % Frequency Response of FM Signal

rect_demF = fftshift(fft(rect_dem,fl));% Frequency Response of Rectified FM Signal

recF = fftshift(fft(rec,fl)); % Frequency Response of Recovered Message Signal

%% PLOTTING 4

figure;subplot(211);plot(t,m);grid on;

xlabel('time');ylabel('Amplitude');

title('m(t)');ylim([-3 2]);

subplot(212);plot(t,rec);

title('Recovered Signal');xlabel('{\it t} (sec)');

ylabel('m(t)');grid;

yV8Dl.png

AFBFN.png

My problem is in this third graph to show well I put big picture

w5tX1.png

aSvPF.png

# Answer 1

4d350fd91e33782268f371d7edaa8a76.png

k = -(length(X)-1)/2:1:length(X)/2;

Your k is not symmetric.

If you work with symmetric k is it working fine?

本项目是一个基于SSM(Spring+SpringMVC+MyBatis)框架和Vue.js前端技术的大学生第二课堂系统,旨在为大学生提供一个便捷、高效的学习和实践平台。项目包含了完整的数据库设计、后端Java代码实现以及前端Vue.js页面展示,适合计算机相关专业的毕设学生和需要进行项目实战练习的Java学习者。 在功能方面,系统主要实现了以下几个模块:用户管理、课程管理、活动管理、成绩管理和通知公告。用户管理模块支持学生和教师的注册、登录及权限管理;课程管理模块允许教师上传课程资料、设置课程时间,并由学生进行选课;活动管理模块提供了活动发布、报名和签到功能,鼓励学生参与课外实践活动;成绩管理模块则用于记录和查询学生的课程成绩和活动参与情况;通知公告模块则实时发布学校或班级的最新通知和公告。 技术实现上,后端采用SSM框架进行开发,Spring负责业务逻辑层,SpringMVC处理Web请求,MyBatis进行数据库操作,确保了系统的稳定性和扩展性。前端则使用Vue.js框架,结合Axios进行数据请求,实现了前后端分离,提升了用户体验和开发效率。 该项目不仅提供了完整的源代码和相关文档,还包括了详细的数据库设计文档和项目部署指南,为学习和实践提供了便利。对于基础较好的学习者,可以根据自己的需求在此基础上进行功能扩展和优化,进一步提升自己的技术水平和项目实战能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值