Effacer les filtres
Effacer les filtres

Why do my amplitude become wrong when I vary the frequency from int to double?

1 vue (au cours des 30 derniers jours)
Nina
Nina le 19 Fév 2013
So I started with this code:
A = 10;
B= 17.6;
C=2;
D=11.2;
phi1 = 2;
phi2 = 5;
phi3 = 1;
phi4 = 0;
Fs = 100;
t = 0:1/Fs:1-1/Fs;
x=A*sin(2*pi*10*t+phi1)+B*cos(2*pi*5*t+phi2)+C*sin(2*pi*2*t+phi3)+D*cos(2*pi*t+phi4);
xdft = fft(x);
magnitude = 2* abs(xdft)/length(x)
phase = angle(2* max((xdft))/length(x))
And that gave me all the amplitudes exactly. However when say I change the first frequency from A*sin(2*pi*10*t+phi1) to A*sin(2*pi*10.5*t+phi1), it goes crazy and give me weird output... what am I doing wrong?
Thank you

Réponses (1)

Wayne King
Wayne King le 19 Fév 2013
It does not go "crazy", it only gets the amplitude wrong for the frequency f = 10.5 and this is problem I explained to you in the other post. 10.5 does not correspond to a DFT bin.
See
  2 commentaires
Nina
Nina le 19 Fév 2013
Thank Wayne, I guess I am still trying to understand what is going on...basically, every time I change my frequencies, I need to make sure they fall into appropriate bins?
Nina
Nina le 19 Fév 2013
Also, if 10.5 does not correspond to a DFT bin, how do I deal with it?

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by