【发布时间】:2021-11-30 23:20:23
【问题描述】:
对于像"abc" 这样的字符串标量,它是一个字符数组'a', 'b', 'c',
但是对于像'abc' 这样的字符向量,这也是一个字符数组吗?
为什么我们需要两种类型的数据来保存相同的消息?
【问题讨论】:
对于像"abc" 这样的字符串标量,它是一个字符数组'a', 'b', 'c',
但是对于像'abc' 这样的字符向量,这也是一个字符数组吗?
为什么我们需要两种类型的数据来保存相同的消息?
【问题讨论】:
单引号版本是历史方法,是一个矩形的字符数组。如果您要存储的只是一个字符串,则可以正常工作。但是如果你想在同一个变量中存储多个字符串,矩形数组就变得不那么有用了,因为你必须在较短的字符串上填充空白才能让所有内容都适合矩形数组。此外,作为数组的一行保存的每个单独的字符串在内存中也不连续。
这导致使用元胞数组在同一个变量中保存多个不同长度的字符串。但是,这也有缺点,因为每个字符串都需要有自己的可变标头(> 100 字节),因此会对性能产生影响。
双引号字符串是 MATLAB 引入的一个相对较新的类,用于在单个变量中保存多个字符串。各个字符串以连续块的形式保存在内存中,无需单独的变量标头,因此对它们的操作得到了更优化。
毫无疑问,MATLAB 将来会继续支持所有三种方法以实现向后兼容性。
【讨论】: