由于字符串标量是一个字符序列或数组,为什么我们还需要字符向量作为字符串标量组合单个字符?
Since a string scalar is a sequence or array of characters, why do we still need character vector as string scalar combines single characters?
对于像 "abc"
这样的字符串标量,它是一个字符数组 'a', 'b', 'c'
,
但是对于像 'abc'
这样的字符向量,这也是一个字符数组吗?
为什么我们需要两种类型的数据来保存相同的消息?
单引号版本是历史方法,是一个矩形字符数组。如果您要存储的只是一个字符串,则可以正常工作。但是如果你想在同一个变量中存储多个字符串,矩形数组就变得没那么有用了,因为你必须在较短的字符串上填充空白以使所有内容都适合矩形数组。此外,作为数组的一行保存的每个单独的字符串在内存中都不连续。
这导致使用元胞数组在同一个变量中保存多个不同长度的字符串。但是,这也有缺点,因为每个字符串都需要有自己的变量 header(> 100 字节),因此会影响性能。
双引号字符串是相对较新的 class 由 MATLAB 引入,用于在单个变量中保存多个字符串。各个字符串以连续块的形式保存在内存中,不需要单独的变量 headers,因此对它们的操作更加优化。
为了向后兼容,MATLAB 无疑会在未来继续支持这三种方法。
对于像 "abc"
这样的字符串标量,它是一个字符数组 'a', 'b', 'c'
,
但是对于像 'abc'
这样的字符向量,这也是一个字符数组吗?
为什么我们需要两种类型的数据来保存相同的消息?
单引号版本是历史方法,是一个矩形字符数组。如果您要存储的只是一个字符串,则可以正常工作。但是如果你想在同一个变量中存储多个字符串,矩形数组就变得没那么有用了,因为你必须在较短的字符串上填充空白以使所有内容都适合矩形数组。此外,作为数组的一行保存的每个单独的字符串在内存中都不连续。
这导致使用元胞数组在同一个变量中保存多个不同长度的字符串。但是,这也有缺点,因为每个字符串都需要有自己的变量 header(> 100 字节),因此会影响性能。
双引号字符串是相对较新的 class 由 MATLAB 引入,用于在单个变量中保存多个字符串。各个字符串以连续块的形式保存在内存中,不需要单独的变量 headers,因此对它们的操作更加优化。
为了向后兼容,MATLAB 无疑会在未来继续支持这三种方法。