Hi,
I'm new student for writing in Matlab. so, I don't know how I can plot Y which is fourier transform of X(n). there is an error which says:"Vectors must be the same length".
x(n)=sin(100t)+sin(2000t)+sin(6000t);
my script is :
fs=6000;
% I consider 2 seconds for input signal
N=2;
t=(0:1/fs:N-1/fs);
w=(-N*fs/2:1/fs:(N-1)*fs/2);
X=sin(100*t)+sin(2000*t)+sin(6000*t);
X_fft=fft(X,fs);
X_fft=fftshift(X_fft);
Y=abs(X_fft);
figure;
subplot(3,1,1);
plot(t,X);
title('input signal X(t)before filtering')
%plot the first 100 samples
subplot(3,1,2);
plot(t(1:100),X(1:100));
title('Input signal with the first 100 samples')
%plot the DFT
subplot(3,1,3);
plot(w,Y);
title ('DFT for input signal befor filtering')

답변 (1개)

Walter Roberson
Walter Roberson 2017년 6월 11일

0 개 추천

You have
X_fft=fft(X,fs);
that tells fft to produce an output of length fs, 6000 . But your original data is length fs*N so you have problems when you try to plot(t,X) since t is length 12000 but X is length 6000

댓글 수: 2

Negar Sharafdoust
Negar Sharafdoust 2017년 6월 13일
I tried to solve the problem in the way you said and put N*fs instead of fs in fft(X,fs). but I got error. also I changed the w to get the result but it gives error in line plot (w,abs(X_fft)). can you tell me exactly which line I should correct?and how to write the command. thanks a lot
Your w is just completely the wrong size. Also, remember, it should be symmetrical, and remember that two adjacent frequencies are in each bin.
w = -N : 2/fs : N;
w(end) = [];
The second line there gets rid of an extra point as you would otherwise have an odd number (the same number for negative as positive, plus the entry for 0 exactly).

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Parametric Spectral Estimation에 대해 자세히 알아보기

태그

질문:

2017년 6월 11일

댓글:

2017년 6월 13일

Community Treasure Hunt

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

Start Hunting!

Translated by