need help with the question
조회 수: 2 (최근 30일)
이전 댓글 표시
This code is not working i am using this to calulate the amplitude but i am getting this error
Index exceeds matrix dimensions.
Error in t31 (line 11)
F1=Fmag(N/2+1:N);
l
load('data.mat');
dt=t(2)-t(1);% t vector has equally spaced t so this seprates t values
N=length(t);
F=fft(f,N); %fast fourier transform of f/N
Fshifted=fftshift(F);%place 0 frequency in the centre
Fmag=norm(Fshifted);%magnitude of fshifted
nu_NY=1/dt/2;%nquist frequency
nu=linspace(0,nu_NY,N/2+1);%spectrum of frequncy vals associated with FFT frequencies
%adding postive and negative frequncies
F1=Fmag(N/2+1:N);
F2=Fmag(N/2:-1:1);
a=[F1,0]+[0,F2];
%plotting amplitued vs assoicated frequencies
plot(a,nu)
댓글 수: 4
per isakson
2019년 4월 16일
편집: per isakson
2019년 4월 16일
Should it be indexing
F1=Fmag(N/2+1:N);
as in the error message or a multiplication
F1=Fmag*(N/2+1:N);
as in the code ???
답변 (1개)
Walter Roberson
2019년 4월 16일
f is a vector. You fft it asking for an output the same length as it is, so F is a vector. fftshift of that is a vector. You then norm() that vector and assign the result to Fmag . norm() of a vector gives a scalar. Then on line 11, Fmag(N/2+1:N) is an attempt to index the scalar at a location that is not 1.
댓글 수: 3
참고 항목
카테고리
Help Center 및 File Exchange에서 Fourier Analysis and Filtering에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!