What is the problem in this code?

1 vue (au cours des 30 derniers jours)
Hassan Ali Shah
Hassan Ali Shah le 2 Jan 2015
f0=100;
f=(0:f0/40:f0*2);
Ts=1/fs;
n=0:8;
xs = 5*cos(2*pi*f0*n*Ts);
i=fft(xs);
plot(f,abs(i(1:81)))
  1 commentaire
Hassan Ali Shah
Hassan Ali Shah le 2 Jan 2015
it gives the error Index exceeds matrix dimensions.
Error in Untitled (line 7) plot(n,abs(i(1:81)));

Connectez-vous pour commenter.

Réponse acceptée

Shoaibur Rahman
Shoaibur Rahman le 2 Jan 2015
Modifié(e) : Shoaibur Rahman le 2 Jan 2015
Your n has a length of 9, as n=0:8, so i will have length of 9 as well,and hence, you cannot write i(1:81). There are many ways to solve this. Here is one: replace n = 0:8 by n = linspace(0,8,length(f)). This will make both f and i of same length.
Also, although plot(f,abs(i(1:81))) works fine, but you can simply use plot(f,abs(i))
Another way may be: keep everything same, but write i = fft(xs,length(f)) . This will perform 81 point fft on xs. Again, you can use plot(f,abs(i))
  1 commentaire
Hassan Ali Shah
Hassan Ali Shah le 2 Jan 2015
thanks dear. it worked.though both the ways are doing good,but your "another way" suits me more. thanks alot

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

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

Start Hunting!

Translated by