对于 strjoin 函数,如果相同的代码可以在 Matlab 和 Octave 上运行就好了。strjoin 的参数几乎相同。不同之处在于,在 Matlab 中它需要一个向量 [],而在 Octave 中它需要一个单元格 {}。除了检查“OCTAVE_VERSION”进行切换之外,还有什么更好的方法吗?
strjoin(["mat" "lab"]);
https://www.mathworks.com/help/matlab/ref/strjoin.html
strjoin({"oc" "tave"});
https://octave.sourceforge.io/octave/function/strjoin.html
OCTAVE_VERSION
https://docs.octave.org/v4.0.3/How-to-distinguish- Between-Octave-and-Matlab_003f.html
strjoin
在 MATLAB 中也采用字符向量单元格数组,正如您在链接的文档中所读到的。在 MATLAB 中,传统上,“字符串”是字符向量(元素为字符的数组)。这些是用
'
:创建的'foo'
。要将多个字符串放在同一个变量中,您需要将它们放在单元格数组中。Octave 发现"
MATLAB 语法中未使用 ,因此将其理解为与 相同'
。因此,您可以在 Octave 中将字符向量创建为'foo'
或"foo"
。后来,MATLAB 引入了对象。它使用( )
string
创建,可以像数字一样制成数组(字符串数组)。此对象的索引工作方式不同,并且在可用性方面有很多优势。Octave 无法在不破坏大量现有 Octave 代码的情况下复制此功能,因此 Octave 中没有此功能。"
"foo"
[]
string
因此,如果您想编写在 Octave 和 MATLAB 中都能运行的代码,请始终
'
对字符串使用单引号。strjoin({'foo' 'bar'})
在两者中均可运行。