gpt4 book ai didi

matlab - 什么是 。'附加到列表末尾以便在 bsxfun 中使用吗?

转载 作者:行者123 更新时间:2023-12-02 07:00:25 24 4
gpt4 key购买 nike

从 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,但我不明白什么是 .'做?我理解 ' 是转置,但 .' 是什么?

最佳答案

您知道您可以输入诸如 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 transposehelp 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

关于matlab - 什么是 。'附加到列表末尾以便在 bsxfun 中使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21823189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com