我希望将一些数字作为字符串(具有不同的长度)有效地存储到表中。这是我的代码:
% 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
我可以做些什么来改善它?谢谢。
答案 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输入数值数组。