frequency shift property of the of FT

69 views (last 30 days)
marwa mohamed
marwa mohamed on 11 Aug 2020
Answered: JAHNAVI on 26 Sep 2023
Dear All,
I have a question, maybe it is a basic for someone, but i am still stuck on it for few days now..
i want to apply the modulation/ Frequency shifting property of the Fourier transform ----> F{exp(j2πf0t)x(t)}=X(f−f0)
I have a signal with size of (3072000 1) it is a pulse signal not a sine wave.
with the following parameters:
Lc = 500; % Code length of the signal
Tc = 2e-9; % Time for which a constant phase applied in the transmitter
so i was trying to do it as the following:
nfft=length(signal);
shift= -500000000;
T= 0:Tc/2:1-1/Tc; % time vector
mult= exp(-i*2*pi*shift*T);
shiftsignal=fft(signal.*mult);
But it gives me an empty vector because of the time vector!!
Can someone help me with that? also, how can i chose the correct time vector for this example.

Answers (4)

Jon
Jon on 11 Aug 2020
As currently written you are trying to produce a time vector starting at 0 with increments of 1e-9 (Tc/2) up to a value of -5e8 (1 - 1/Tc). This is empty because the end value is smaller than the start.
This probably wasn't what you intended. What starting value, increment, and final value do you actually want for Tc?
Were you trying to shift the result by an amount 1/Tc? If so you need to use parentheses like this
T= (0:Tc/2:1) - 1/Tc;
  2 Comments
marwa mohamed
marwa mohamed on 12 Aug 2020
Dear Jon,
Thank you for your answer. but when i am applying this T to mult function it gives me out of memorry error. Could you please help me with that?
I just want the T vector to increase by Tc/2 until the end of the signal.
Thanks in advance
Jon
Jon on 28 Aug 2020
Sorry I haven't been on MATLAB answers for awhile.
In general if I want a vector that starts at t1 and ends at t2 in increments of dT you would use:
t = t1:dT:t2
I'm not really clear on your notation, but I think you should be able to adapt the above line of code to your situation.
If you are running out of memory, I would suspect that either your final time is too large or your increment is too small so that you are generating a vector that has many more elements than you really want.

Sign in to comment.


Sk Group
Sk Group on 27 Oct 2021

JAHNAVI
JAHNAVI on 26 Sep 2023
clc
clear all
close all
syms t w
x1 = exp(-t)*heaviside(t); % try with different input signals and obsere the output
X1 = fourier(x1);
disp("Fourier transform of signal 1")
X1
x2=dirac(t);% try with different input signals and obsere the output
X2=fourier(x2);
disp("Fourier transform of signal 2")
X2
disp("Sum of Fourier transoforms of signal 1 and signal2")
X1+X2
x=x1+x2;
X=fourier(x);
disp("Fourier transform of sum of signal 1 and signal 2")
X
syms t a
x = exp(-t)*heaviside(t)*exp(a*t);
X = fourier(x);
disp("Fourier Transform of frequency shift right signal is")
X

JAHNAVI
JAHNAVI on 26 Sep 2023
clc
clear all
close all
syms t w
x1 = exp(-t)*heaviside(t); % try with different input signals and obsere the output
X1 = fourier(x1);
disp("Fourier transform of signal 1")
X1
x2=dirac(t);% try with different input signals and obsere the output
X2=fourier(x2);
disp("Fourier transform of signal 2")
X2
disp("Sum of Fourier transoforms of signal 1 and signal2")
X1+X2
x=x1+x2;
X=fourier(x);
disp("Fourier transform of sum of signal 1 and signal 2")
X
syms t a
x = exp(-t)*heaviside(t)*exp(-a*t);% try with different input signals and obsere the output
X = fourier(x);
disp("Fourier Transform of frequency shift left signal is")
X
syms t a
x = exp(-t)*heaviside(t)*exp(a*t);
X = fourier(x);
disp("Fourier Transform of frequency shift right signal is")
X

Tags

Community Treasure Hunt

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

Start Hunting!