我正在遍历一个目录并以这种方式将文件的完整路径及其标签存储在Matlab的单元格矩阵中:
image_directory=dir(['path_for_directory/' char(folder1) '/' char(folder2)]);
for j=3:size(image_directory,1)
myCellArray{index_image}{1}=['path_for_directory/' char(folder1) '/' char(folder2) '/' image_directory(j).name];
myCellArray{index_image}{2}=label;
index_image=index_image+1;
end
end
end4
填写完这个单元格矩阵后,我想将其内容(字符串和整数)保存在文本文件中。我做了类似(http://www.mathworks.com/matlabcentral/answers/112695-how-to-write-an-array-containing-letters-and-number-to-file)中的建议。这就是我的尝试:
fid = fopen('data_out.txt','w');
for i=1:size(myCellArray,1)
fprintf(fid, '%s \t %s\n', myCellArray{i,1}, sprintf('%d ', myCellArray{i,2}));
end
fclose(fid);
问题是,当我在matlab中执行此源代码时,出现以下错误:
Error using sprintf
Function is not defined for 'cell' inputs.
Error in write_files (line 50)
fprintf(fid, '%s \t %s\n', myCellArray{i,1}, sprintf('%d', myCellArray{i,2}));
我的代码出了什么问题?
答案 0 :(得分:0)
如果myCellArray{i,2}
只是一个整数,我认为你可以使用,
fprintf(fid, '%s \t %d\n', myCellArray{i,1}, myCellArray{i,2});
答案 1 :(得分:0)
为了解决我刚刚改变的问题
image_directory=dir(['path_for_directory/' char(folder1) '/' char(folder2)]);
for j=3:size(image_directory,1)
myCellArray{index_image}{1}=['path_for_directory/' char(folder1) '/' char(folder2) '/' image_directory(j).name];
myCellArray{index_image}{2}=label;
index_image=index_image+1;
end
end
end
使用:
image_directory=dir(['path_for_directory/' char(folder1) '/' char(folder2)]);
for j=3:size(image_directory,1)
myCellArray{index_image,1}=['path_for_directory/' char(folder1) '/' char(folder2) '/' image_directory(j).name];
myCellArray{index_image,2}=label;
index_image=index_image+1;
end
end
端
换句话说,代码中存在填充单元格矩阵的拼写错误。