adding matrices with different dimensions

2 次查看(过去 30 天)
I got an equation similar to this : X-sin(thita). size(X) = 1x50 size(thita) = 1x180.
My output should be a matrix of 50x180. It could be done easily by using 2 for-loop but i am trying to find something more efficient. I tried bsxfun() but i could not manage it.
Thanks in advance

采纳的回答

David Young
David Young 2014-9-12
编辑:David Young 2014-9-12
Convert X to a column vector. Then bsxfun will do what you want.
For example
X = rand(1, 50);
thita = rand(1, 180);
Xthitadiffs = bsxfun(@minus, X.', sin(thita)); % transpose on X makes column

更多回答(1 个)

Mischa Kim
Mischa Kim 2014-9-12
Dimitrios, you mean something like
X = 1:50;
theta = (1:180)*pi/180;
mat = repmat(X',1,numel(theta)) - repmat(sin(theta),numel(X),1);
  1 个评论
David Young
David Young 2014-9-12
It's a good idea to use .' rather than ' for transposing X, because ' takes the complex conjugate. We don't know for sure that X is always real.

请先登录,再进行评论。

类别

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