我有一个大小为A
的双矩阵10x10
。我想要做的是我有一个大小为1x10
的字符串数组。我想用这个字符串数组替换矩阵A
中的第一行作为这些列的标题。与第一列相同。如果有人可以请在Matlab中建议如何做到这一点。
答案 0 :(得分:1)
如果您至少拥有MATLAB R2013b或更高版本,则可以使用array2table
功能以所需格式显示值。我们假设您的矩阵存储在A
中。接下来,假设您的行标题位于单元格数组中并存储在row
中,并且您的列标题存储在名为col
的单元格数组中,请尝试以下操作:
试试这个:
T = array2table(A, 'RowNames', row, 'VariableNames', col);
以下是一个例子:
>> A = [1 12 30.48; 2 24 60.96; 3 36 91.44]
>> col = {'Feet', 'Inches', 'Centimeters'};
>> row = {'Number 1', 'Number 2', 'Number 3'};
>> T = array2table(A, 'RowNames', row, 'VariableNames', col)
T =
Feet Inches Centimeters
____ ______ ___________
Number 1 1 12 30.48
Number 2 2 24 60.96
Number 3 3 36 91.44
如果你有R2013a或更低,你别无选择,只能使用一个单元阵列。您只能在具有单元格数组的矩阵中实现混合数据类型。您需要做的是将每个数字转换为单元格数组中的单个单元格。我将向您介绍一个未记录的函数:sprintfc
。您可以直接将矩阵打印到单元阵列。
因此,尝试这样做,假设row
包含大小为1 x N
的行标题的单元格数组中的字符串,col
包含列的单元格数组中的字符串标题为1 x N
的标头。使用矩阵A
:
Acell = sprintfc('%f', A); %// Convert matrix to cells
out = [' ', row; col.', Acell]; %// Generate final matrix
out
包含您想要的矩阵。这是一个例子:
>> A = [1 12 30.48; 2 24 60.96; 3 36 91.44];
>> Acell = sprintfc('%f', A);
>> row = {'Feet', 'Inches', 'Centimeters'};
>> col = {'Number 1', 'Number 2', 'Number 3'};
>> out = [' ', row; col.', Acell]
out =
' ' 'Feet' 'Inches' 'Centimeters'
'Number 1' '1.000000' '12.000000' '30.480000'
'Number 2' '2.000000' '24.000000' '60.960000'
'Number 3' '3.000000' '36.000000' '91.440000'