frequency shift property of the of FT

70 ビュー (過去 30 日間)
marwa mohamed
marwa mohamed 2020 年 8 月 11 日
回答済み: JAHNAVI 2023 年 9 月 26 日
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.

回答 (4 件)

Jon
Jon 2020 年 8 月 11 日
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 件のコメント
marwa mohamed
marwa mohamed 2020 年 8 月 12 日
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 2020 年 8 月 28 日
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.

サインインしてコメントする。


Sk Group
Sk Group 2021 年 10 月 27 日

JAHNAVI
JAHNAVI 2023 年 9 月 26 日
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 2023 年 9 月 26 日
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

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by