相关疑难解决方法(0)

单元阵列上的矢量化操作

这篇文章是通过讨论单元数组是否为"正常数组"并且向量化不适用于单元数组来触发的.

我想知道为什么在MATLAB中没有实现后面的矢量化语法,它反对它:

>> {'hallo','matlab','world'} == 'matlab'
??? Undefined function or method 'eq' for input arguments of type 'cell'.
Run Code Online (Sandbox Code Playgroud)

在内部它将等同于

[{'hallo'},{'matlab'},{'world'}] == {'matlab'}
Run Code Online (Sandbox Code Playgroud)

因为MATLAB知道何时投射,以下工作:

[{'hallo','matlab'},'world']
Run Code Online (Sandbox Code Playgroud)

Cell数组是一个指针数组.如果左侧和右侧都指向相同的对象,isequal('hallo','hallo')则按预期返回true,那么为什么MATLAB仍然不允许最顶层的示例?

我知道我可以使用strmatchcellfun.

摘要:

  • 操作者==这是需要向量化在上面的例子中是eq与不isequal(其它运营商<lt等)
  • eq 内置数值类型,适用于所有其他类型(如字符串)MATLAB提供了重载此(和其他)运算符的自由.
  • 因此,对于任何类型的定义类型的单元数组(如字符串),操作符矢量化都是可能的.
  • myFun( myString )或的函数矢量化myFun( myCellOfStrings )也是可能的,你只需在内部实现它myFun.功能sin(val)sin(array)工作也不是巫术,而是因为这两种情况都是在内部实施的.

matlab vectorization

8
推荐指数
2
解决办法
9674
查看次数

标签 统计

matlab ×1

vectorization ×1