• Matlabta dosyadan veri okuma, veri yazma

    Öncelikle basit olarak Matlab ile dosya acma- veri yazma- veri okuma- dosya kapama işlemlerini gostermek istiyorum. Daha önce herhangi bir (C gibi) programlama dili bilen arkadaslar kodları daha kolay anlayacaktır. Kullandığım komutlar hakkında daha geniş bilgiyi Matlab ın Help inden veya Matlab ın resmi internet sitesinden erişebilirsiniz.

    Öncelik le fopen ile txt uzantılı bir dosya açarız.

    fid=fopen(‘imgeisleme.txt’,‘w+’); % -1 ise basarısız
    fid2=fopen(‘imgeisleme2.txt’,‘w+’);

    Eger fid degeri -1 e esit ise acmak istediğimiz dosya açılamamıştır. Eger pozitif bir değerse acmak istediğimiz dosya açılmıştır.  Kod içindeki w+ yazmak ve okumak için açıldığını göstermektedir.

    Dosyanın açılıp açılmadığını aşağıdaki gibi test edebiliriz.

    if fid<0
    error ‘current.txt okunamıyor..’;
    end
    if fid2<0
    error ‘current.txt okunamıyor..’
    end

    Şimdi Matlab ın kendi içinde var olan cameraman imgesini imread komutu ile okuyoruz. veri uzerinde matematiksel işlemler yapılacaksa double tipine cevirmemiz uygun olur.

    imge=double(imread(‘cameraman.tif’));
    [w,h]=size(imge);

    size komutu imgemizin boyut (satir,sutun)bilgisini, belirtilen değişkenlere atar.
    Okumuş olduğumuz cameraman imgesini açmış olduğumuz dosyaya yazmak için fwrite komutunu kullanırız.

    count=fwrite(fid,imge); % binary yazar
    count2=fprintf(fid2,‘%03.4f ‘,imge); % float yazıyor

    son olarak acmış olduğumuz dosyayı fclose komutu ile kapatırız.

    st=fclose(fid); % 0 ise basarılı, -1 ise basarısız
    st2=fclose(fid2);

    Şimdi aşağıdaki program ile yukarıda yapmış olduğumuz işlemin sağlamasını yaparız. Kullanılan reshape komutunu ile verimizi boyutlandırabilmekteyiz. Mesela [1,12] boyutlu a diziyi reshape(a,3,4) komutu ile [3,4] boyutlu matris haline getiririz.

    fid=fopen(‘imgeisleme.txt’,‘r’);
    fid2=fopen(‘imgeisleme2.txt’,‘r’);

    if fid<0
    error ‘current.txt okunamıyor..’;
    end
    if fid2<0
    error ‘current.txt okunamıyor..’
    end

    image1=fread(fid);
    image2=fscanf(fid2,‘%f’);

    image11=reshape(image1,w,h);
    image22=reshape(image2,w,h);

    imshow(uint8(image22),[]);
    figure,imshow(uint8(image22),[]);

    Kullandığımız imgeyi herhangi bir klasore yazmak için imwrite komutunu kullanırız. sprintf komutu ile yazılacak klasorun yolunu ve imge nin hangi isimle ve uzantıyla yazılacağını ifade ederiz. Yazılabilecek dosya turlerine matlab ın help inden ulaşabilirsiniz.

    %%%### imge kaydetme ###%%%
    i=5;
    adres=sprintf(’C:\\Documents and Settings\\alluser\\Desktop\\imgeisleme\\imge%3d.bmp’,i);
    imwrite(uint8(imge),adres);
    %%%%%%%%%%%%%%%%%%%%%%%%%%%

    Perşembe, Ocak 1st, 2009 at 17:04
Henüz yorum yapılmamış.

Yorum yaz

XHTML: Bu etiketleri kullanabilirsin: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Yukarı çık