为什么不能在Matlab中创建水平字符串数组?

时间:2016-08-09 13:40:11

标签: matlab

如果我尝试按如下方式创建一个字符串数组,我将得到一个串联字符串(或1x6数组?)。

>> [ 'A1' 'A2' 'A3']
ans = A1A2A3

我期望获得的是一个包含3个元素的字符串数组,如['A1' 'A2' 'A3']

如果我尝试先创建一个垂直字符串数组并转置它,我会得到:

>> transpose([ 'A1'; 'A2'; 'A3'])
ans =

AAA
123

这与python在创建字符串列表方面有很大不同。我不知道为什么'A1','A2'和'A3'不是分开而是连在一起。似乎背后有一些原则我不太明白。希望有人能解释。谢谢!

1 个答案:

答案 0 :(得分:5)

在python中,您有一个包含list个实例的str

A = ['A1', 'A2', 'A3']
type(A)
# <type 'list'>

type(A[0])
# <type 'str'>

在MATLAB中,array本身并不是数据类型,因为从技术上讲,所有数据类型都是固有的数组。例如,'A1'是类型为char的2元素数组。

使用[]括起多个多字符串字符串时,这些值会连接在一起,输出也将是char。在您的情况下,这会将所有输入字符数组连接成一个6元素字符数组。

A = ['A1', 'A2', 'A3'];
class(A)
%   char

size(A)
%   1   6

如果你想要一个数组,其中每个元素都是非标量的(可能是不同的数据类型),你需要使用一个单元格数组

A = {'A1', 'A2', 'A3'}