Hello, i want to give x,y coordinates to a self-written function. The current state is, that i use 2 loops. I think that this is a very ugly and computation consuming solution. Can someone help me to improve this?
x = linspace(0,1,11) ;
y = linspace(0,1,11) ;
[X,Y] = meshgrid(x,y) ;
for kk = 1:11
for nn = 1:11
Coordinate = [X(kk,nn) Y(kk,nn)];
Z(kk,nn) = f_SomeFunction(Coordinate,someConstant,...);
end
end

4 件のコメント

madhan ravi
madhan ravi 2019 年 1 月 30 日
編集済み: madhan ravi 2019 年 1 月 30 日
Coordinate = [X Y] % doesn't this do what you want? without loop?
Nimananda Sharma
Nimananda Sharma 2019 年 1 月 30 日
Hi,
It appears that your function accepts only scalar input
One possible solution would to change your function to use maxtrix?
Christopher Brokmann
Christopher Brokmann 2019 年 1 月 30 日
its a very long function (~2k lines) which only accepts scalar inputs... before i take the long challenge to change the function to matrix input, i want to change the loops.
Matt J
Matt J 2019 年 1 月 30 日
編集済み: Matt J 2019 年 1 月 30 日
But the loops don't have any computation in them except your call to f_SomeFunction. There's nothing else there to optimize.

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

 採用された回答

Rik
Rik 2019 年 1 月 30 日

0 投票

If you are not prepared to change the function to accept non-scalar inputs, you can use this code to implicitly use for-loops. This can be faster in some circumstances, and it may look cleaner (even if that is subjective).
Coordinate = [X Y];
someConstant_array=repmat(someConstant,size(Coordinate));
Z = arrayfun(@f_SomeFunction,Coordinate,someConstant_array);

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

製品

リリース

R2017b

質問済み:

2019 年 1 月 30 日

回答済み:

Rik
2019 年 1 月 30 日

Community Treasure Hunt

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

Start Hunting!

Translated by