如果我尝试按如下方式创建一个字符串数组,我将得到一个串联字符串(或1x6数组?)。
>> [ 'A1' 'A2' 'A3']
ans = A1A2A3
我期望获得的是一个包含3个元素的字符串数组,如['A1' 'A2' 'A3']
。
如果我尝试先创建一个垂直字符串数组并转置它,我会得到:
>> transpose([ 'A1'; 'A2'; 'A3'])
ans =
AAA
123
这与python在创建字符串列表方面有很大不同。我不知道为什么'A1','A2'和'A3'不是分开而是连在一起。似乎背后有一些原则我不太明白。希望有人能解释。谢谢!
答案 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'}