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 CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by