在Matlab中以表格或文本文件的形式显示不同尺寸的单元格

在Matlab中以表格或文本文件的形式显示不同尺寸的单元格,matlab,dataset,cell-array,Matlab,Dataset,Cell Array,我在MatlabR2012A中有一个单元格数据类型,不同的单元格具有不同的维度,并且我在表格或文本文件中显示结果时遇到问题。两个都很好。我的手机看起来像这样 'detected' 'crane' crane' 'time' 'overlap' [99,88] [99,88] 900 'overlap' [99,98] [99,88] 1000 。。。 所以问题是起重机,它包含一个由2个数字组成的数组 我想在一个表中查看它并将其打印到一个文本文件中,但我经常会遇到与不正确的维度有

我在MatlabR2012A中有一个单元格数据类型,不同的单元格具有不同的维度,并且我在表格或文本文件中显示结果时遇到问题。两个都很好。我的手机看起来像这样

'detected' 'crane'   crane' 'time'
'overlap'   [99,88] [99,88]  900
'overlap'   [99,98] [99,88]  1000
。。。 所以问题是起重机,它包含一个由2个数字组成的数组

我想在一个表中查看它并将其打印到一个文本文件中,但我经常会遇到与不正确的维度有关的错误


我试过了

T=cell2table(collision(2:end,:),'Variable Names', collision(1,:));
然后出错了

“cell”类型输入的未定义函数Cell2表格

例如,我还试着把每个细胞做成一个矩阵

crane1data = cell2mat(collision(2:end,2))
然后尝试将它们全部合并,但它们的大小不同,分别是1x2和2x2,所以我得到了一个错误

CAT参数维度不一致


谢谢你的帮助

假设您有这个单元阵列:

>> C = {
    'detected'  'crane1'  'crane2' 'time'
    'overlap'   [99,88]   [99,88]  900
    'overlap'   [99,98]   [99,88]  1000
}
C = 
    'detected'    'crane1'        'crane2'        'time'
    'overlap'     [1x2 double]    [1x2 double]    [ 900]
    'overlap'     [1x2 double]    [1x2 double]    [1000]
如何将其转换为MATLAB表格:

>> T = cell2table(C(2:end,:), 'VariableNames',C(1,:))
T = 
    detected      crane1      crane2     time
    _________    ________    ________    ____
    'overlap'    99    88    99    88     900
    'overlap'    99    98    99    88    1000

假设您有此单元格阵列:

>> C = {
    'detected'  'crane1'  'crane2' 'time'
    'overlap'   [99,88]   [99,88]  900
    'overlap'   [99,98]   [99,88]  1000
}
C = 
    'detected'    'crane1'        'crane2'        'time'
    'overlap'     [1x2 double]    [1x2 double]    [ 900]
    'overlap'     [1x2 double]    [1x2 double]    [1000]
如何将其转换为MATLAB表格:

>> T = cell2table(C(2:end,:), 'VariableNames',C(1,:))
T = 
    detected      crane1      crane2     time
    _________    ________    ________    ____
    'overlap'    99    88    99    88     900
    'overlap'    99    98    99    88    1000

假设您有此单元格阵列:

>> C = {
    'detected'  'crane1'  'crane2' 'time'
    'overlap'   [99,88]   [99,88]  900
    'overlap'   [99,98]   [99,88]  1000
}
C = 
    'detected'    'crane1'        'crane2'        'time'
    'overlap'     [1x2 double]    [1x2 double]    [ 900]
    'overlap'     [1x2 double]    [1x2 double]    [1000]
如何将其转换为MATLAB表格:

>> T = cell2table(C(2:end,:), 'VariableNames',C(1,:))
T = 
    detected      crane1      crane2     time
    _________    ________    ________    ____
    'overlap'    99    88    99    88     900
    'overlap'    99    98    99    88    1000

假设您有此单元格阵列:

>> C = {
    'detected'  'crane1'  'crane2' 'time'
    'overlap'   [99,88]   [99,88]  900
    'overlap'   [99,98]   [99,88]  1000
}
C = 
    'detected'    'crane1'        'crane2'        'time'
    'overlap'     [1x2 double]    [1x2 double]    [ 900]
    'overlap'     [1x2 double]    [1x2 double]    [1000]
如何将其转换为MATLAB表格:

>> T = cell2table(C(2:end,:), 'VariableNames',C(1,:))
T = 
    detected      crane1      crane2     time
    _________    ________    ________    ____
    'overlap'    99    88    99    88     900
    'overlap'    99    98    99    88    1000

您可以将所有单元格转换为字符串并使用fprintf:

 C = {
    'detected'  'crane1'  'crane2' 'time'
    'overlap'   [99,88]   [99,88]  900
    'overlap'   [99,98]   [99,88]  1000
};

[nRow nCol] = size(C);
fID = fopen('textFile.txt','w');
for i = 1:nRow
    for j = 1:nCol
        if ~ischar(C{i,j})
            fprintf(fID,'%10s',num2str(C{i,j}));
        else
            fprintf(fID,'%10s',C{i,j});
        end

        if j == nCol
            fprintf(fID,'\n');
        end
    end
end
fclose(fID); 
textFile.txt中的结果:

  detected    crane1    crane2      time
   overlap    99  88    99  88       900
   overlap    99  98    99  88      1000

您可以将所有单元格转换为字符串并使用fprintf:

 C = {
    'detected'  'crane1'  'crane2' 'time'
    'overlap'   [99,88]   [99,88]  900
    'overlap'   [99,98]   [99,88]  1000
};

[nRow nCol] = size(C);
fID = fopen('textFile.txt','w');
for i = 1:nRow
    for j = 1:nCol
        if ~ischar(C{i,j})
            fprintf(fID,'%10s',num2str(C{i,j}));
        else
            fprintf(fID,'%10s',C{i,j});
        end

        if j == nCol
            fprintf(fID,'\n');
        end
    end
end
fclose(fID); 
textFile.txt中的结果:

  detected    crane1    crane2      time
   overlap    99  88    99  88       900
   overlap    99  98    99  88      1000

您可以将所有单元格转换为字符串并使用fprintf:

 C = {
    'detected'  'crane1'  'crane2' 'time'
    'overlap'   [99,88]   [99,88]  900
    'overlap'   [99,98]   [99,88]  1000
};

[nRow nCol] = size(C);
fID = fopen('textFile.txt','w');
for i = 1:nRow
    for j = 1:nCol
        if ~ischar(C{i,j})
            fprintf(fID,'%10s',num2str(C{i,j}));
        else
            fprintf(fID,'%10s',C{i,j});
        end

        if j == nCol
            fprintf(fID,'\n');
        end
    end
end
fclose(fID); 
textFile.txt中的结果:

  detected    crane1    crane2      time
   overlap    99  88    99  88       900
   overlap    99  98    99  88      1000

您可以将所有单元格转换为字符串并使用fprintf:

 C = {
    'detected'  'crane1'  'crane2' 'time'
    'overlap'   [99,88]   [99,88]  900
    'overlap'   [99,98]   [99,88]  1000
};

[nRow nCol] = size(C);
fID = fopen('textFile.txt','w');
for i = 1:nRow
    for j = 1:nCol
        if ~ischar(C{i,j})
            fprintf(fID,'%10s',num2str(C{i,j}));
        else
            fprintf(fID,'%10s',C{i,j});
        end

        if j == nCol
            fprintf(fID,'\n');
        end
    end
end
fclose(fID); 
textFile.txt中的结果:

  detected    crane1    crane2      time
   overlap    99  88    99  88       900
   overlap    99  98    99  88      1000
请尝试以下操作:

以问题中的相同示例为例

C = 

    'detected'    'crane1'        'crane2'        'time'
    'overlap'     [1x2 double]    [1x2 double]    [ 900]
    'overlap'     [1x2 double]    [1x2 double]    [1000]

ds=cell2dataset(C); % This command converts the cell array to dataset assuming the first 
                    % row as the header.
export(ds,'file','test.txt'); % This will `export` the `dataset` to the text file 
                              % `test.txt` 
这将保存文本文件,结果如下:

detected    crane1_1    crane1_2    crane2_1    crane2_2    time
overlap        99          88          99          88        900
overlap        99          98          99          88       1000    
此处
crane1_1
crane1_2
对应于
crane1
的两个子列。 希望这对您有所帮助。

尝试以下方法:

以问题中的相同示例为例

C = 

    'detected'    'crane1'        'crane2'        'time'
    'overlap'     [1x2 double]    [1x2 double]    [ 900]
    'overlap'     [1x2 double]    [1x2 double]    [1000]

ds=cell2dataset(C); % This command converts the cell array to dataset assuming the first 
                    % row as the header.
export(ds,'file','test.txt'); % This will `export` the `dataset` to the text file 
                              % `test.txt` 
这将保存文本文件,结果如下:

detected    crane1_1    crane1_2    crane2_1    crane2_2    time
overlap        99          88          99          88        900
overlap        99          98          99          88       1000    
此处
crane1_1
crane1_2
对应于
crane1
的两个子列。 希望这对您有所帮助。

尝试以下方法:

以问题中的相同示例为例

C = 

    'detected'    'crane1'        'crane2'        'time'
    'overlap'     [1x2 double]    [1x2 double]    [ 900]
    'overlap'     [1x2 double]    [1x2 double]    [1000]

ds=cell2dataset(C); % This command converts the cell array to dataset assuming the first 
                    % row as the header.
export(ds,'file','test.txt'); % This will `export` the `dataset` to the text file 
                              % `test.txt` 
这将保存文本文件,结果如下:

detected    crane1_1    crane1_2    crane2_1    crane2_2    time
overlap        99          88          99          88        900
overlap        99          98          99          88       1000    
此处
crane1_1
crane1_2
对应于
crane1
的两个子列。 希望这对您有所帮助。

尝试以下方法:

以问题中的相同示例为例

C = 

    'detected'    'crane1'        'crane2'        'time'
    'overlap'     [1x2 double]    [1x2 double]    [ 900]
    'overlap'     [1x2 double]    [1x2 double]    [1000]

ds=cell2dataset(C); % This command converts the cell array to dataset assuming the first 
                    % row as the header.
export(ds,'file','test.txt'); % This will `export` the `dataset` to the text file 
                              % `test.txt` 
这将保存文本文件,结果如下:

detected    crane1_1    crane1_2    crane2_1    crane2_2    time
overlap        99          88          99          88        900
overlap        99          98          99          88       1000    
此处
crane1_1
crane1_2
对应于
crane1
的两个子列。
希望这对您有所帮助。

我之前尝试过,我得到了错误未定义函数cell2table,用于“cell”类型的输入参数。如果您向我们展示您尝试过的内容(使用代码)并提及您收到的任何错误(编辑您的问题并发布该信息),我将非常有帮助。。。不管怎样,你运行的是什么版本的MATLAB
table
最近被引入,但它实际上与统计工具箱多年来提供的
dataset
是一样的。@AustenNovis:就像我说的,尝试使用
dataset
类(假设你有统计工具箱):
D=cell2dataset(C(2:end,:),'VarNames',C(1,:)
。我之前尝试过,我得到了错误未定义函数cell2table,用于“cell”类型的输入参数。如果您向我们展示您尝试过的内容(使用代码)并提及您收到的任何错误(编辑您的问题并发布该信息),我会很有帮助。。。不管怎样,你运行的是什么版本的MATLAB
table
最近被引入,但它实际上与统计工具箱多年来提供的
dataset
是一样的。@AustenNovis:就像我说的,尝试使用
dataset
类(假设你有统计工具箱):
D=cell2dataset(C(2:end,:),'VarNames',C(1,:)
。我之前尝试过,我得到了错误未定义函数cell2table,用于“cell”类型的输入参数。如果您向我们展示您尝试过的内容(使用代码)并提及您收到的任何错误(编辑您的问题并发布该信息),我会很有帮助。。。不管怎样,你运行的是什么版本的MATLAB
table
最近被引入,但它实际上与统计工具箱多年来提供的
dataset
是一样的。@AustenNovis:就像我说的,尝试使用
dataset
类(假设你有统计工具箱):
D=cell2dataset(C(2:end,:),'VarNames',C(1,:)
。我之前尝试过,我得到了错误未定义函数cell2table,用于“cell”类型的输入参数。如果您向我们展示您尝试过的内容(使用代码)并提及您收到的任何错误(编辑您的问题并发布该信息),我会很有帮助。。。不管怎样,你运行的是什么版本的MATLAB
table
最近被引入,但它实际上与统计工具箱多年来提供的
dataset
是一样的。@AustenNovis:就像我说的,尝试使用
dataset
类(假设你有统计工具箱):
D=cell2dataset(C(2:end,:),'VarNames',C(1,:)
。原来我的Matlab版本没有Cell2数据集或Cell2表格。它只有cell2mat和cell2struct。我想这就是为什么我有这么多问题的原因。我的Matlab版本没有Cell2数据集或Cell2表格。它只有cell2mat和cell2struct。我想这就是为什么我有这么多问题的原因。我的Matlab版本没有Cell2数据集或Cell2表格。它只有cell2mat和cell2struct。我想这就是为什么我有这么多问题的原因。我的Matlab版本没有Cell2数据集或Cell2表格。它只有cell2mat和cell2struct。我想这就是为什么我有这么多问题