Getting error about index in for loop

1 view (last 30 days)
Carly Hudson
Carly Hudson on 5 May 2020
Commented: per isakson on 5 May 2020
%for loop for plotting given data
for k = 0:size(dataN)
val = dataN(:,k);
avg = mean(val);
end
I am getting this error:
Index in position 2 is invalid. Array indices must be positive integers or logical values.
Error in Lab5_Problem2 (line 25)
val = dataN(:,k);
I cannot figure out why, but I am trying to extract the first row of the array (dataN). Thank you for any help!

Answers (1)

per isakson
per isakson on 5 May 2020
Edited: per isakson on 5 May 2020
Three problems:
  • replace 0:size(dataN) by 1:size(dataN,2). Matlab's indexing is one-based.
  • avg = mean(val); overwrites avg in every iteration; only the last value will persist
  • "trying to extract the first row of the array (dataN)" dataN(:,k) refers to the k:th column
  2 Comments
Carly Hudson
Carly Hudson on 5 May 2020
How do I make it so avg is not overwritten every iteration? I think I am trying to refer to the kth coulmn because I am trying to extract the average from every column of data. Sorry if any of this is wrong, but I am very new to MatLab. Thank you for your help!
per isakson
per isakson on 5 May 2020
This should do it
wid = size(dataN,2);
avg = nan( 1, wid );
for k = 1 : wid
val = dataN(:,k);
avg(k) = mean(val);
end

Sign in to comment.

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!