Given 2 vectors X,Y both of length N, How do I act on every single term in X with every single term in Y into a N by N matrix?

1 回表示 (過去 30 日間)
Just to make myself clear, assuming X = [1 2 3], Y = [1 2 3] and that I want to act with 'exp'
I want to create a matrix Z = [exp(1+1) exp(1+2) exp(1+3) ; exp(2+10 exp(2+2) exp(2+3) ; exp(3+1) exp(3+2) exp(3+3)]
I know I can run a simple for loop, but How do I make it simple using matlab matrix/vectors notation? Thanks

採用された回答

Stephen23
Stephen23 2016 年 5 月 30 日
編集済み: Stephen23 2016 年 5 月 30 日
>> X = [1,2,3]; Y = [1,2,3];
>> exp(bsxfun(@plus,X.',Y))
ans =
7.3891 20.0855 54.5982
20.0855 54.5982 148.4132
54.5982 148.4132 403.4288
Or
>> [Xm,Ym] = ndgrid(X,Y);
>> exp(Xm+Ym)
ans =
7.3891 20.0855 54.5982
20.0855 54.5982 148.4132
54.5982 148.4132 403.4288

その他の回答 (1 件)

Torsten
Torsten 2016 年 5 月 30 日
Z=exp(X).'*exp(Y)
Best wishes
Torsten.

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by