将字符串标题添加到Matlab的双列

时间:2015-04-13 07:48:02

标签: matlab

我有一个大小为A的双矩阵10x10。我想要做的是我有一个大小为1x10的字符串数组。我想用这个字符串数组替换矩阵A中的第一行作为这些列的标题。与第一列相同。如果有人可以请在Matlab中建议如何做到这一点。

1 个答案:

答案 0 :(得分:1)

对于MATLAB R2013b或更高版本

如果您至少拥有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   

对于MATLAB R2013a或更低版本

如果你有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'