从bsxfun的Matlab文档中给出了一个例子:
fun = @(A,B) A.*sin(B);
A = 1:7;
B = pi*[0 1/4 1/3 1/2 2/3 3/4 1].'; % what is the .' at the end?
C = bsxfun(fun,A,B)
我理解如何使用bsxfun,但我不明白是什么。呢?我理解'要转置,但是什么是。'?
答案 0 :(得分:4)
来自here
b = a.'
计算矩阵a
的非共轭转置并返回 结果在b
。
通过以下示例查看不同之处:
>> [1+6i 7-3i 5]'
ans =
1.0000 - 6.0000i
7.0000 + 3.0000i
5.0000
>> [1+6i 7-3i 5].'
ans =
1.0000 + 6.0000i
7.0000 - 3.0000i
5.0000
在你的情况下,你没有复杂的数字,所以两个(有或没有点.
)的结果将是相同的
答案 1 :(得分:4)
您知道可以输入help /
或help .
之类的内容吗?您将获得所有MATLAB运算符和特殊字符的帮助。
为了获得transpose
这样的帮助,首先要了解MATLAB语法。有点奇怪的是,撇号起着三重作用:
第二个允许你在字符串中写一个文字撇号:
>> a = 'This is how it''s done!';
这种三重角色是由于历史原因,而且在我看来相当不幸。因为,如果你试试
>> help .'
MATLAB语法规则规定这将被解释为
>> help('.'')
这是未终结字符串。因此,要获得转座的帮助,你必须“逃避”撇号:
>> help .''
这给了你答案:
...
transpose - Transpose .'
ctranspose - Complex conjugate transpose '
...
所以区别在于:
>> A = [1+1i 2+2i
3+3i 4+4i];
>> A'
ans =
1.0000 - 1.0000i 3.0000 - 3.0000i
2.0000 - 2.0000i 4.0000 - 4.0000i
>> A.'
ans =
1.0000 + 1.0000i 3.0000 + 3.0000i
2.0000 + 2.0000i 4.0000 + 4.0000i
您可以从中获得一些乐趣:
>> A' * A.'
ans =
14 30
20 44
当然,您也可以获得help transpose
或help ctranspose
的帮助,因为撇号符号只是那些较长函数名称的别名。当你进入OOP和运算符重载时,那些长函数名也是使用的:
classdef MyAwesomeClass
methods
%// this is how you'd overload the transpose operator for your class:
function obj = transpose(obj)
%// implement transpose here
end
end
end