概述
以下是正确的部分
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function [ s ] = AM_Mod( m,c,a )
%To obtian the AM signal.
%m:message;
%c:carrier;
%a:modulation index
s = zeros(1,length(m));
n = abs(m);
b = max(n);
mn = m/b;
Ac=b/a;
s=Ac*(1+a*mn).*c;
主程序:
clc;clear all;
t0=10; % signal duration
ts=0.001; % sampling interval
fc=1.2; % carrier frequency
t=[0:ts:t0]; % time vector
a=0.85; % Modulation index
R=1 ; % Resistance
C=1 ; %Capacitance
tau = R*C; % time constant
m=t.*(t>0).*(t<=t0/2)+(t0-t).*(t>(t0/2)); % message signal
c=cos(2*pi*fc.*t); % carrier signal
env=zeros(1,length(t)); % the envelope of the signal
% Complete the AM_Mod function to get the modulated signal
u = AM_Mod(m,c,a); % the modulated signal
figure;
plot(t,m),title('Message in TimeDomain');xlabel('time'),ylabel('m(t)')
figure;
plot(t,u),title('Modulated signal in TimeDomain');xlabel('time'),ylabel('Amplitude');
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以下是引发错误的部分,目的是检包络
env = zeros(1,length(t));
ex = 0;
fori=1:1:length(t)
ex=ex*exp(-ts/tau); %逐步比较调制信号与RC电路中信号的大小
ifu(1,i)>ex
env(1,i)=u(1,i); %调制信号大于电容电压 电容充电
ex= u(1,i);
else
env(1,i)=ex %调制信号小于电容电压 自然放电
end
end
figure;
plot(t, env),title('The recoveredsignal');xlabel('time'),ylabel('Amplitude');
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
是第一次使用matlab编程,前两个绘图成功,最后一个似乎在数组的计算上死循环了。
望指教
最后
以上就是高大狗为你收集整理的am包络检波matlab,程序死循环 求指导(模拟AM调制信号包络检波)的全部内容,希望文章能够帮你解决am包络检波matlab,程序死循环 求指导(模拟AM调制信号包络检波)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复