7

嗨,我正在尝试使用以下命令创建一个字符串元胞数组:

data = ['1';'2';'3';'4';'5';'6';'7';'8';'9';'10';'11';'12';'13';'14';'15';'16';'17';'18';'19';'20';];

我期望一个包含 25 个元素的单元格数组。但我得到:

length(data)

= 33

所以显然数字 12,13 等被计为 2 位。

我的问题是如何确保单元格数组的长度为 20?即使我使用的是整数,我将单元格数组放入的函数也必须是字符串的单元格数组!

4

2 回答 2

16

你需要做:

data = {'1';'2';'3';'4';'5';'6';'7';'8';'9';'10';'11';'12';'13';'14';'15';'16';'17';'18';'19';'20';};

使用{}. 这些将形成一个单元阵列。

于 2013-10-03T19:44:12.800 回答
11

您可以使用{}而不是[]构建一个单元格,或者您可以使用strsplit构建一个任意长度的字符串单元格,这些字符串表示从 1 到 的数字N

data = strsplit(num2str(1:N));

更新:现在最快的方法是使用未记录sprintfc的函数(注意末尾的“c”)将每个元素打印到它自己的单元格:

>> A = sprintfc('%g',1:20)
A = 
  Columns 1 through 11
    '1'    '2'    '3'    '4'    '5'    '6'    '7'    '8'    '9'    '10'    '11'
  Columns 12 through 20
    '12'    '13'    '14'    '15'    '16'    '17'    '18'    '19'    '20'
>> which sprintfc
built-in (undocumented)
于 2013-10-03T19:57:30.027 回答