在MATLAB中进行多个文件夹生成和文件写入

时间:2015-03-18 22:43:12

标签: matlab batch-file

以下是建议的重新发布代码

我在Matlab中有一个图像读取代码,它将像素作为整数值映射到文本文件中。(。dat)

下一步是从文件夹中读取图像并制作相应的文件夹,并将.dat文件保存在该文件夹中。

例如,1.tif保存为batch / 1 / 1.dat 2.tif保存为批/ 2 / 2.dat等等

这是我的MATLAB函数

function createDAT(numFiles,source)

tic
for i=1:numFiles
    source_folder = [source];
    destination_folder = [num2str(i)];
    mkdir(destination_folder);

    img_name = [num2str(i) '.tif'];
    dat_filename = [num2str(i) '.dat'];

    source_path = fullfile(source_folder, img_name);
    destination_path = fullfile(source_folder, destination_folder, dat_filename);

    disp(destination_path);
    disp(source_path);


    file_id = fopen(fullfile(destination_path), 'w'); 
    disp(file_id);
    BB=imread(source_path ,'TIF');


    nx=size(BB,2);
    ny=size(BB,1);
    B=zeros(ny,nx);
%     wholeGeom=zeros(ny,nx);
    wholeGeom=BB;

    for i=1:nx
        for j=1:ny
                 if (wholeGeom(j,i) == 255)
                    B(j,i) = 1;
                 elseif (wholeGeom(j,i) == 0)
                    B(j,i) = 0;
                 end
        end
    end


'printing first slice'
fprintf(file_id, '%i\n', B);
%fwrite(outid, B);
fclose(file_id);

image(30*B)
axis equal
drawnow

end

toc

并且输出表明字符串正常。但错误仍然存​​在。我想知道是否必须对文件ID执行某些操作,因为它显示为负值

>> createDAT(5,'batch')
Warning: Directory already exists. 
> In createDAT at 7 
batch/1/1.dat
batch/1.tif
    -1


ans =

printing first slice

Error using fprintf
Invalid file identifier. Use fopen to generate a valid file identifier.

Error in createDAT (line 42)
fprintf(file_id, '%i\n', B);

0 个答案:

没有答案