meshgrid values to function without loop

5 ビュー (過去 30 日間)
Christopher Brokmann
Christopher Brokmann 2019 年 1 月 30 日
回答済み: Rik 2019 年 1 月 30 日
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 件のコメント
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 日
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 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

製品


リリース

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by