2 つのベクトルX=[x0,x1,x2];
Y=[y0,y1];
があるとします。Matlab には、2x3 行列 Z=f(X,Y) を生成できる単一のコマンドが存在しZ=[x0+y0, x1+y0, x2+y0; x0+y1, x1+y1, x2+y1]
ますか?
前もって感謝します。
2 つのベクトルX=[x0,x1,x2];
Y=[y0,y1];
があるとします。Matlab には、2x3 行列 Z=f(X,Y) を生成できる単一のコマンドが存在しZ=[x0+y0, x1+y0, x2+y0; x0+y1, x1+y1, x2+y1]
ますか?
前もって感謝します。
次のものも使用できますndgrid
。
[xx yy] = ndgrid(Y,X);
Z = xx+yy;
そして、次のように悪用kron
される可能性があります (ただし、内部kron
的には基本的に のバリエーションを使用することに注意してくださいndgrid
):
Z = log(kron(exp(X),exp(Y).'));
これを試して
Z = repmat(X,numel(Y),1) + repmat(Y',1,numel(X));
Nishant anwser の代わりに kron を使用します:
%for example
X=[1,2,3]; Y=[1,2]
Z = kron(X, ones(numel(Y), 1)) + kron(ones(1, numel(X)), Y');
Z =
2 3 4
3 4 5
これがあなたに合っているなら、関数を定義することができます:
% skron for sum kron
skron = @(X,Y) kron(X, ones(numel(Y), 1)) + kron(ones(1, numel(X)), Y');
Z = skron(X,Y);