How to find and plot the Fourier Transform of signal = cos(2*pi*f​*t).*(A.*(​heaviside(​t)-heavisi​de(t-39E-9​)))

26 次查看(过去 30 天)
The full code that I am using is:
t = 0:1.66E-12:40E-9;
A = 1;
A2 = 2;
f=3E9;
signal = cos(2*pi*f*t).*(A.*(heaviside(t)-heaviside(t-39E-9)));
signal_2 = [cos(2*pi*f*t).*(A2.*(heaviside(t)-heaviside(t-19E-9)))]+[cos(2*pi*f*t).*(A2.*(heaviside(t-21E-9)-heaviside(t-39E-9)))];
I am trying to calculate the Fourier Transform of the two signals and plot the Fourier Transform of them. It should be a 'sinc' function when it is Fourier Transformed, but I can't seem to get it to plot right using "fft".
Here is some code I found online (I am not certain where, so I can't cite it), but tried and couldn't get it to work I don't really know what "er" is?
signal = cos(2*pi*f*t).*(A.*(heaviside(t)-heaviside(t-39E-9)));
y2 = fft(signal);
m2 = abs(y2);
p2 = angle(y2);
er2 = (0:length(y2)-1)*1.66E-12/length(y2);
figure (3)
subplot(2,1,1)
plot(er2,m2)
  2 个评论
David Goodmanson
David Goodmanson 2017-2-27
编辑:David Goodmanson 2017-2-27
Hi '56, There are a couple of things going on here. [1] The sinc function is the the fourier transform of a single rectangular pulse. You can approximate that with an fft, but only if you make the pulse width fairly narrow compared to the total width in the time domain. [2] You are multiplying by a cosine function, which affects the result in the frequency domain.
If you temporarily make f = 0 (so that the cosine function is a constant), go to a narrower rectangle
signal = cos(2*pi*f*t).*(A.*(heaviside(t-10e-9)-heaviside(t-12e-9)));
and plot abs(y) as before, you will see a sinc function, almost. (It's not exactly sinc and looks different anyway because the effect of abs puts all of its oscillations above the x axis). If you then change f back to its original value you will get a pair of waveforms in the frequency domain, each of which looks somewhat sinc-like.
MD Rasel Basunia
MD Rasel Basunia 2022-4-8
Step: 1. Express the signsl in symbolic expression. 2.use fourier function to calculate fourier transform 3.define new frequency range for creating vectors and to use plot command 4.use subs command to substitute old frequency by new defined frequency range for plot

请先登录,再进行评论。

回答(1 个)

Walter Roberson
Walter Roberson 2017-2-27
syms t w
Pi = sym('pi');
A = sym(1);
A2 = sym(2);
f = sym(3) * 10^9;
c1 = sym(39)/10^9;
c2 = sym(19)/10^9;
c3 = sym(21)/10^9;
c4 = sym(39)/10^9;
signal = cos(2*Pi*f*t) * (A *(heaviside(t)-heaviside(t-c1)));
signal_2 = [cos(2*Pi*f*t) * (A2 * (heaviside(t)-heaviside(t-c2)))] + [cos(2*Pi*f*t) * (A2 * (heaviside(t-c3)-heaviside(t-c4)))];
f1 = simplify( fourier(signal, t, w), 'steps', 20);
f2 = simplify( fourier(signal_2, t, w), 'steps', 20);
Now you can plot the symbolic expressions f1 and f2.
Just be careful you do not substitute in your time signal for w -- w should be frequency, not time.

类别

Help CenterFile Exchange 中查找有关 Symbolic Math Toolbox 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by