在Matlab中以表格或文本文件的形式显示不同尺寸的单元格
我在MatlabR2012A中有一个单元格数据类型,不同的单元格具有不同的维度,并且我在表格或文本文件中显示结果时遇到问题。两个都很好。我的手机看起来像这样在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个数字组成的数组 我想在一个表中查看它并将其打印到一个文本文件中,但我经常会遇到与不正确的维度有
'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”类型的输入参数。如果您向我们展示您尝试过的内容(使用代码)并提及您收到的任何错误(编辑您的问题并发布该信息),我会很有帮助。。。不管怎样,你运行的是什么版本的MATLABtable
最近被引入,但它实际上与统计工具箱多年来提供的dataset
是一样的。@AustenNovis:就像我说的,尝试使用dataset
类(假设你有统计工具箱):D=cell2dataset(C(2:end,:),'VarNames',C(1,:)
。我之前尝试过,我得到了错误未定义函数cell2table,用于“cell”类型的输入参数。如果您向我们展示您尝试过的内容(使用代码)并提及您收到的任何错误(编辑您的问题并发布该信息),我会很有帮助。。。不管怎样,你运行的是什么版本的MATLABtable
最近被引入,但它实际上与统计工具箱多年来提供的dataset
是一样的。@AustenNovis:就像我说的,尝试使用dataset
类(假设你有统计工具箱):D=cell2dataset(C(2:end,:),'VarNames',C(1,:)
。我之前尝试过,我得到了错误未定义函数cell2table,用于“cell”类型的输入参数。如果您向我们展示您尝试过的内容(使用代码)并提及您收到的任何错误(编辑您的问题并发布该信息),我会很有帮助。。。不管怎样,你运行的是什么版本的MATLABtable
最近被引入,但它实际上与统计工具箱多年来提供的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。我想这就是为什么我有这么多问题