2013-03-02 3 views
0

У меня есть 50 изображений, я хочу записать данные в текстовый файл в matlab для каждого столбца изображения, но когда я запустил программу, он будет записывать данные только с одним значением изображения.Запись выходных данных в файл excel в matlab

srcFiles = dir('E:\practice \\*.jpg'); 
for i = 1 : length(srcFiles) 
    filename = strcat('E:\practice\',srcFiles(i).name); 
    I = imread(filename); 
    B=bwlabel(I); 
    D=regionprops(B,'MajorAxisLength','MinorAxisLength','Extent'); 
    j=D.MajorAxisLength; 
    k=D.MinorAxisLength; 
    Axialratio=j/k 
    ex=[D.Extent] 
    fid=fopen('mu.txt ','wt+'); 
    fprintf(fid,'extent Axialratio\n'); 
    fprintf(fid,'%6f  %6f \n',[ex,Axialratio]); 
    fclose(fid); 
end 

ответ

0

Вы делаете fopen с wt+ опцией. Во-первых, такого выбора нет. Возможно, вы имели в виду w+. Документация говорит:

Open or create new file for reading and writing. Discard existing contents, if any. 

Таким образом, вы выбрасываете содержание каждый раз, когда вы входите в for петли для каждого изображения. Выполните следующие действия:

srcFiles = dir('E:\practice \\*.jpg'); 
fid=fopen('mu.txt ','w+'); 
for i = 1 : length(srcFiles) 
    filename = strcat('E:\practice\',srcFiles(i).name); 
    I = imread(filename); 
    B=bwlabel(I); 
    D=regionprops(B,'MajorAxisLength','MinorAxisLength','Extent'); 
    j=D.MajorAxisLength; 
    k=D.MinorAxisLength; 
    Axialratio=j/k 
    ex=[D.Extent] 

    fprintf(fid,'extent Axialratio\n'); 
    fprintf(fid,'%6f  %6f \n',ex,Axialratio); //Also don't create a matrix, you could have written it as two separate quantities as I have done now. 
end 
fclose(fid); 

Это должно сработать.