Effacer les filtres
Effacer les filtres

frequency shift property of the of FT

19 vues (au cours des 30 derniers jours)
marwa mohamed
marwa mohamed le 11 Août 2020
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.

Réponses (4)

Jon
Jon le 11 Août 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 commentaires
marwa mohamed
marwa mohamed le 12 Août 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 le 28 Août 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.

Connectez-vous pour commenter.


Sk Group
Sk Group le 27 Oct 2021

JAHNAVI
JAHNAVI le 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 le 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

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by