将数字作为字符串存储在表中的最有效方法

时间:2015-04-14 21:43:42

标签: matlab

我希望将一些数字作为字符串(具有不同的长度)有效地存储到表中。这是我的代码:

% Table with numbers
n = 5;
m = 5;
T_numb = array2table((rand(n,m)));

% I create a table with empty cells (to store strings)
T_string = array2table(cell(n,m));

for i = 1:height(T_numb)
   for ii = 1:width(T_numb)
      T_string{i,ii} = cellstr(num2str(T_numb{i,ii}, '%.2f'));
   end
end

我可以做些什么来改善它?谢谢。

2 个答案:

答案 0 :(得分:3)

我目前无法访问函数cell2table,但使用未记录的函数sprintfc可能在此处运行良好(详情请查看here)。

例如:

%// 2D array
a = magic(5)

b = sprintfc('%0.2f',a)

生成一个像这样的单元格数组:

b = 

    '17.00'    '24.00'    '1.00'     '8.00'     '15.00'
    '23.00'    '5.00'     '7.00'     '14.00'    '16.00'
    '4.00'     '6.00'     '13.00'    '20.00'    '22.00'
    '10.00'    '12.00'    '19.00'    '21.00'    '3.00' 
    '11.00'    '18.00'    '25.00'    '2.00'     '9.00' 

您可以使用cell2table转换为表格。

所以在一行:

YourTable = cell2table(sprintfc('%0.2f',a))

答案 1 :(得分:2)

这似乎很快 -

T_string = cell2table(reshape(strtrim(cellstr(num2str(A(:),'%.2f'))),size(A)))

regexprep替换strtrim -

cell2table(reshape(regexprep(cellstr(num2str(A(:),'%.2f')),'\s*',''),size(A)))

此处,A是2D输入数值数组。