# I want to use a for loop inside a function, where the for loop contains a subfuction. Each loop must store the variable value and make a matrix of all values, but I get 0s :(

3 ビュー (過去 30 日間)
Nikolas Katsantonis 2022 年 6 月 17 日
function [a] = Main(Coordinates)
a=5;
for n=1:a
Coordinates=3+n;
a= test(n,Coordinates)
end
end
function [A, B]= test(n,Coordinates)
A(n)= Coordinates*3;
B(n)= A(n)*Coordinates*6;
end
##### 3 件のコメント表示 2 件の古いコメント非表示 2 件の古いコメント
Geoff Hayes 2022 年 6 月 17 日
That makes sense, right? Look at this code
function [A, B]= test(n,Coordinates)
A(n)= Coordinates*3;
B(n)= A(n)*Coordinates*6;
end
You are creating a new A and B whenever the test function is called. These new variables/arrays won't have the history from previous calls to this function. So you are always returning arrays of zeros except for the nth value which is set in this function call.

サインインしてコメントする。

### 採用された回答

Geoff Hayes 2022 年 6 月 17 日
@Nikolas Katsantonis - you are using a as an integer and as a result from test
a=5;
for n=1:a %<--- a as integer
Coordinates=3+n;
a= test(n,Coordinates) %<--- a as result
end
test should be returning two values and not arrays (you will need to correct this code), and so you would do something like
a=5;
for n=1:a
Coordinates=3+n;
[aValue, bValue] = test(n,Coordinates);
end
then store aValue into an array so that you don't overwrite it on each iteration of the loop
a=5;
myData = zeros(a,1);
for n=1:a
Coordinates=3+n;
[aValue, bValue] = test(n,Coordinates);
myData(n) = aValue;
end
then return myData in the signature of your function (not a).
##### 4 件のコメント表示 3 件の古いコメント非表示 3 件の古いコメント
Nikolas Katsantonis 2022 年 6 月 18 日
@Geoff Hayes Yes, it now works perfectly, thank you a lot!!

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeComplex Numbers についてさらに検索

### Community Treasure Hunt

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

Start Hunting!

Translated by