这篇文章是通过讨论单元数组是否为"正常数组"并且向量化不适用于单元数组来触发的.
我想知道为什么在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仍然不允许最顶层的示例?
我知道我可以使用strmatch或cellfun.
摘要:
==这是需要向量化在上面的例子中是eq与不isequal(其它运营商<是lt等)eq 内置数值类型,适用于所有其他类型(如字符串)MATLAB提供了重载此(和其他)运算符的自由.myFun( myString )或的函数矢量化myFun( myCellOfStrings )也是可能的,你只需在内部实现它myFun.功能sin(val)和sin(array)工作也不是巫术,而是因为这两种情况都是在内部实施的.