假设我有A
,它是一个64x1的单元格数组。
64个单元格中的每个单元格都包含另一个带有字符串的单元格(字符串是数字,即11
)
A{1, 1}{1, 1} = ’11’ (char)
A{2, 1}{1, 1} = ’13’ (char)
如何创建数字数组,例如
A = [11,13,…]
cell2mat
函数似乎仅在“第一级”单元格数组上起作用:
cell2mat
不支持包含单元格数组或对象的单元格数组。
答案 0 :(得分:0)
这很简单,但是您需要将其分为两个步骤。假设我们有一个简单的1x4字符串数组:
A= {'11','13','15','17'};
要进行转换,您需要将内容存储在临时变量S
中,然后使用sscanf
生成最终结果:
S = sprintf('%s ', A{:});
Result = sscanf(S, '%f')
唯一的问题是它将是列向量。如果您需要连续使用,则只需transpose(Results)
。
答案 1 :(得分:0)
我不确定我是否完全理解您的问题。如果我做对了,那么您在谈论下面的像asd
这样的单元格数组
asd=cell(61,1);
for ii=1:64
asd{ii}={['test',num2str(ii)]}
end
如果我正确理解了您的目标,我认为下面的方法会做得很好
A=char([asd{:}])
然后,如果您要将字符串转换为数字(这对我的测试不起作用,但可能对您的字符串有用),只需在此新向量上使用str2num
答案 2 :(得分:0)
您可以使用cellfun
将A
中每个单元格的内容转换为两倍。
A{1, 1}{1, 1} = '11';
A{2, 1}{1, 1} = '13';
A_array = cellfun(@(a) str2double(a), A)
该函数的分解:@(a)
将A
的每个单元格的内容传递给变量a
,该变量可以使用str2double(a)
转换为double。
答案 3 :(得分:0)
将A
转换为comma-separated list个单元格,然后horizontally concatenate个这些单元格并最终应用str2double
;
A = str2double([A{:}]);