尝试使用字符串和数字保存单元格数组时,MATLAB中的sprintf错误

时间:2015-06-24 08:50:02

标签: arrays matlab file printf

我正在遍历一个目录并以这种方式将文件的完整路径及其标签存储在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}));

我的代码出了什么问题?

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

换句话说,代码中存在填充单元格矩阵的拼写错误。