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

Ken*_*n T 3 matlab

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

>> [ 'A1' 'A2' 'A3']
ans = A1A2A3
Run Code Online (Sandbox Code Playgroud)

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

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

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

AAA
123
Run Code Online (Sandbox Code Playgroud)

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

Sue*_*ver 5

在python中,你有一个list包含str实例.

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

type(A[0])
# <type 'str'>
Run Code Online (Sandbox Code Playgroud)

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

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

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

size(A)
%   1   6
Run Code Online (Sandbox Code Playgroud)

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

A = {'A1', 'A2', 'A3'}
Run Code Online (Sandbox Code Playgroud)