So I have two separate Functions here. In the first function I am generating a signal that I want to modulate. I have to take the output from the first function and use it in the second one.
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
I was able to successfully call the output signal to my second function but now I'm having trouble modulating the signal and graphing it.
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
I feel like I'm really close but I just can't seem to figure out what I'm doing wrong. I'm relatively New to using Matlab so if you have a more simple way of completing this I would appreciate any and all advice.
The code
axis([xmin xmax ymin ymax])
sets the x-axis and y-axis limits for the current axes. Line
axis([Time(1) Time(2001) -2 2])
means that the minimum x-limit is the fist element of Time
(or t_in
, which appears to be the same) and the maximum x-limit is 2001th-element of Time
. However, Time
contains only 201 elements because it is equal to -0.010:0.0001:0.010
(i.e. it contains elemenys from -0.01 to 0.01 with the step value 0.0001).
It s better not to use a constant for the index of the last element of Time
because the size of your array can change in the future. Instead you can use Time(end)
construction. When used as an index, end
means the last array index, thus Time(end)
is the last array element.
And, as rayryeng had already said, plot(t_in,DSB,'g')
will plot the modulated signal