【发布时间】:2014-06-25 03:10:50
【问题描述】:
假设我有两个向量: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]在哪里?
提前致谢。
【问题讨论】:
标签: matlab matrix orthogonal
假设我有两个向量: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]在哪里?
提前致谢。
【问题讨论】:
标签: matlab matrix orthogonal
这是 bsxfun[C = bsxfun(fun,A,B) 将函数句柄 fun 指定的逐元素二元运算应用于数组 A 的完美案例和 B,启用单例扩展。在这种情况下,@plus 是需要的函数句柄。] -
Z = bsxfun(@plus,X,Y.')
举个例子,看看这个——
X=[2,3,5]
Y=[1,4]
Z = bsxfun(@plus,X,Y.')
给出输出 -
X =
2 3 5
Y =
1 4
Z =
3 4 6
6 7 9
【讨论】:
' 会改变结果(复共轭)
.,因为 OP 有符号 - x0、y0,所以千万不要冒险 :) 谢谢!
试试这个
Z = repmat(X,numel(Y),1) + repmat(Y',1,numel(X));
【讨论】:
你也可以使用ndgrid:
[xx yy] = ndgrid(Y,X);
Z = xx+yy;
并且有可能滥用kron如下(但请注意,内部kron基本上使用ndgrid的变体):
Z = log(kron(exp(X),exp(Y).'));
【讨论】:
meshgrid,不是吗? +1
ndgrid 的习惯
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);
【讨论】: