Index out of bounds

2 views (last 30 days)
bugatti79
bugatti79 on 2 Aug 2014
Commented: Star Strider on 4 Aug 2014
Folks,
What is wrong with this simple code?
Fo=100;
wn=20;
k=2000;
m=5;
w=30;
x0=.1;
x0_dot=.1;
f_0=Fo/m;
for i=1:100;
X(i)=Fo/(k-m*w(i)^2);
end
figure;
plot(w,X);
xlabel('w');
ylabel('X');
I get the following error
Attempted to access w(2); index out of bounds because numel(w)=1.
Error in Example315pg326RAO (line 21)
X(i)=Fo/(k-m*w(i)^2);
Thanks

Accepted Answer

Star Strider
Star Strider on 2 Aug 2014
Your w variable is defined as a constant scalar: w=30. You have to define w as a 100-element vector, because your code doesn’t make sense otherwise (specifically the loop that calculates X(i)).
  2 Comments
bugatti79
bugatti79 on 4 Aug 2014
Thanks
Star Strider
Star Strider on 4 Aug 2014
My pleasure!

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 2 Aug 2014
Is w a constant? Or does it change depending on what i is? If so, how? By the way, it doesn't even matter if you vectorize your code, though since you're plotting versus w it looks like it's supposed to be an array. I made it an array in the "fixed" code below:
fontSize = 24;
Fo = 100;
wn = 20;
k = 2000;
m = 5;
% Make w go from 30 to 60
w = linspace(30, 60, 100);
x0 = .1;
x0_dot = .1;
f_0= Fo / m;
X = Fo ./ (k-m*w.^2);
plot(w, X, 'b-', 'LineWidth', 3);
xlabel('w', 'fontSize', fontSize);
ylabel('X', 'fontSize', fontSize);
title('X vs. w', 'fontSize', fontSize);
grid on;
% Enlarge figure to full screen.
set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
  1 Comment
bugatti79
bugatti79 on 4 Aug 2014
ok, guys, that makes sense. Thanks.

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!