首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AM信号调制

AM信号调制
EN

Stack Overflow用户
提问于 2016-10-06 05:46:34
回答 1查看 198关注 0票数 0

所以我在这里有两个独立的函数。在第一个函数中,我产生了一个我想要调制的信号。我必须从第一个函数中获取输出,并在第二个函数中使用它。

代码语言:javascript
复制
function [output] = JoshGoldenHW3(amplitude,tau_in,t_in)


%Setting up Variables 
A = amplitude;      %The amplitude of the signal. = 1
Tau = tau_in;       %The period of the signal. = 0.010
Time = t_in;        %The time vector(Must be 2001). -0.010:0.0001:0.010


%Setting up the values for x of each period, as well as the slopes of the
%piecewise function
x = abs(mod(Time,Tau)); %Uses modulus function to figure out x value in period
x1 = 0.4*Tau;  %First slope change in period
x2 = 0.5*Tau;  %Second slope change in period
x3 = 0.9*Tau;  %Third slope change in period

%Calculating the slopes used in each period
slope1 = (A/(0.4*Tau));    %First slope calculation
slope2 = ((-A)/(0.1*Tau)); %Second slope calculation
slope3 = ((-A)/(0.4*Tau)); %Third slope calculation
slope4 = (A/(0.1*Tau));    %Fourth slope calculation

%This section defines the equations to be used for the period
eq1 = slope1*(x(x<x1)); 
eq2 = slope2*(x(x>=x1&x<x2)-(0.4*Tau)) + A;
eq3 = slope3*(x(x>=x2&x<x3)-(0.5*Tau));
eq4 = slope4*(x(x>=x3)-(0.9*Tau)) - A;


%Defining the function at each different range of x for each period
f(x<x1) = eq1;
f(x>=x1&x<x2) = eq2;
f(x>=x2&x<x3) = eq3;
f(x>=x3) = eq4;

%Plotting the graph of f(t) vs time.
plot(Time,f,'b-');
grid
xlabel('Time (Sec)');
ylabel('V(t)');
title('Signal');
axis([Time(1) Time(2001)  -2 2])
shg

output = f;

end

我能够成功地将输出信号调用到我的第二个函数,但是现在我很难对信号进行调制并绘制图形。

代码语言:javascript
复制
function DSB = DSBMOD

amplitude = 1;
tau_in = 0.010; %Defining Tau
t_in = -0.010:0.0001:0.010; % Defining Time range
CarFreq = 27000; %Carrier Frequency
Fc = cos(2*pi*CarFreq*t); %Carrier Signal
Sig = JoshGoldenHW3(amplitude,tau_in,t_in); %Calling Signal from previous Function

%Modulating Signal
DSB = Sig.*Fc;

figure('units','normalized','outerposition',[0 0 1 1])

%Plotting Modulated Signal
subplot(4,3,1);
plot(t_in,Sig,'g')
axis([t_in(1) t_in(2001) -2 2])
title('Original Signal');
xlabel('Time (Seconds)');
ylabel('V(t) (Volts)');
grid
shg

%Plottng original Signal
plot(Time,Sig,'b-');
grid
xlabel('Time (Sec)');
ylabel('V(t)');
title('Signal');
axis([Time(1) Time(2001)  -2 2])
shg
end

我觉得我真的很接近,但我似乎不知道自己做错了什么。我是比较新的使用Matlab,所以如果你有一个更简单的方式完成这一点,我会感谢任何和所有的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-06 10:46:21

密码

代码语言:javascript
复制
axis([xmin xmax ymin ymax])

设置当前轴的x轴和y轴限值.线路

代码语言:javascript
复制
axis([Time(1) Time(2001)  -2 2])

这意味着最小x限制是Time的第一个元素(或t_in,它似乎是相同的),最大x限制是Time的第2001元素。但是,Time只包含201个元素,因为它等于-0.010:0.0001:0.010 (即它包含从-0.01到0.01之间的元素,步骤值为0.0001)。

最好不要在Time的最后一个元素的索引中使用常量,因为将来数组的大小可能会发生变化。相反,您可以使用Time(end)构造。当用作索引时,end表示最后一个数组索引,因此Time(end)是最后一个数组元素。

而且,正如雷冷已经说过的,plot(t_in,DSB,'g')将绘制调制信号。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39888373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档