2017-07-03 4 views
0

関数の値を異なる値で計算する構文を記述しました。 は、この例では例2つの値に対してarrayfunを適用します。

x1=[1 2 10 11]; 
x2=[10 11 12 14]; 
C= arrayfun (@(t1,t2) myfunction(A,B,t1,t2),x1,x2,'UniformOutput',0); 
% A and B are matrixs 

する機能はA(x1,x2)B(x1,x2)上の操作を行います。問題はarrayfunが各カップル(x1(1),x2(1)), x1(2),x2(2))などで動作することです。しかし、私はx1とx2のすべての値(16の値の組み合わせで、例えば(x1(1),x2(3))にも適用できるように)を働かせたい。

ループなしで行う方法はありますか?

+0

つまりあなたはX1とX2のすべての組み合わせをしたいですか? 'combvec'を見てください。https://uk.mathworks.com/help/nnet/ref/combvec.html – GameOfThrows

答えて

1

[X Y] = ndgrid(x1,x2); 
C= arrayfun (@(x1,x2) myfunction(A,B,t1,t2),X(:),Y(:),'UniformOutput',0); 
+0

'(:)'を省略して2Dの結果を得ることができます。これは意味があります –

1

だから私はあなたがあなたの関数への通話を変更することなく、それを行うための「ダム」な方法を提供するつもりです:

x1=[1 2 10 11]; 
x2=[10 11 12 14]; 
v = combvec(x1,x2); 
X1 = v(1,:); 
X2 = v(2,:); 

C= arrayfun (@(X1,X2) myfunction(A,B,t1,t2),X1,X2,'UniformOutput',0); 

この事実あなたは、X1とX2のすべての組み合わせを算出した入力あなたが以前にそれをやっていたのと同じように、あなたの機能を介してペアで。 ndgridを使用して

+0

ありがとうございました! – ransa

関連する問題