MATLAB Answers

How to call a function inside a loop with a counter?

19 views (last 30 days)
Ann G
Ann G on 30 Mar 2016
Commented: Ann G on 30 Mar 2016
I want to call a function inside a loop..I call it like that:
flag=0;
for i=1:3
flag=flag+1;
mean(flag)=mean_value(I);
end
But it is not right..What should I do?

  0 Comments

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 30 Mar 2016
Edited: Image Analyst on 30 Mar 2016
I don't know what the function mean_value() does, but it's not getting anything different from one iteration to the next because the badly-named I is not changing inside the loop, so the very same I is going to the mean_value() function on each iteration. This does not make sense.
The other big, big problem is that your mean_value() function may well use the mean() function inside it. However, you overwrite the mean() function by assigning the result of mean_value() to it. Now perhaps the mean() function inside mean_value will still work, but maybe it won't. Either way, it's a horrible, bad, and unwise decision to name a variable/array after the name of a built-in function. Call it "theMeans" or something else, but certainly not "mean".
Also, flag is unnecessary. You can just simply use i instead of flag. But I'd actually use k instead of i or j, which are the imaginary variable.

  3 Comments

Ann G
Ann G on 30 Mar 2016
Than u very much for your advice..To be honest I gave you a hypothetical example...My code has different names and is a little bigger than that..So what I need to do is to use ,lets say,mean(i)=mean_value(i) like that?
Image Analyst
Image Analyst on 30 Mar 2016
No, more like this:
for index = 1 : 3
data = GetData(index); % Somehow get a new value for data.
theMeans(index) = mean_value(data);
end
Ann G
Ann G on 30 Mar 2016
Unfortunately, it doesn't work..I get this message: ??? In an assignment A(I) = B, the number of elements in B and I must be the same.
Error in ==> main_code_multiple_save at 129 theMeans(t)=mean_value(data);

Sign in to comment.

More Answers (0)

Sign in to answer this question.