Matlab Eğitimleri – Çoklu Dosya Okuma ve Yazdırma

Herkese merhabalar;

Matlab Eğitimlerinde bu yazımda sizlere birden fazla dosyanın nasıl okunduğunu ve bunlar üzerinde işlem yaptıktan sonra nasıl bir dosya haline getireceğimizi anlatacağım. Faydalı olması dileğiyle keyifli okumalar.

Yazıma başlamadan önce bir kaç fonksiyonu tanıtmak istiyorum. Tanıtacağım bu fonksiyonlar dir, struct2cell, listdlg ve strjoin. Başlıkta belirttiğim üzere dosyaları okuyabilmek ve dosya isimlerini Matlab ‘e tanıtabilmemiz için bu fonksiyonlar gereklidir. Diğer programlama dillerinden aşina olduğunuz üzere veri tipleri vardır. Matlab veri türlerini genel olarak kendi tanımlamaktadır. Ancak bazı veriler üzerinden çevirme işlemleri yapacağımızdan dolayı bu veri türlerini belirtmemiz gerekmektedir.

Diğer programlama dillerinde olduğu gibi Matlab ortamında da yapılar vardır. Bu yapılarda içlerindeki verilerin ağaç yapısı şeklinde saklamaktadır. Gerekli açıklamaları yaptıktan sonra şimdide fonksiyonlarımızı tanıyalım.

Dir Fonksiyonu

Dir fonksiyonu seçili olan klasördeki dosyaları listelemeye yarar. Bu seçili klasör tabi ki de Matlab’in Current Folder dediğimiz programın var olduğu klasördür.

Struct2Cell

Bu fonksiyon oluşturduğunuz veya var olan bir yapıyı hücre dizisine(cell) dönüştürür.

StrJoin

Bu fonksiyonumuz dizi halindeki verileri string tipine dönüştürür.

 Lstdlg

Liste seçimi için bir diyalog penceresi oluşturur. Bu liste penceresinde seçeceğimiz dosyaların ismini koyarak kullanıcıya istediği dosyaları seçme fırsatı sunacağız.

Şimdi yavaştan dosya okuma işlemlerine geçelim. Bu örneğimizde Excell ortamından verileri çekeceğiz. Ancak kodlama bölümünde göreceğiniz yeri değiştirerek istediğiniz formattaki dosyalar için bu işlemleri oluşturabilirsiniz. Her bir Excell dosyasında 3*1000 taneden toplamda 4 dosya için 12.000 veri bulunmaktadır. Dosya sayısı ve içlerindeki veri sayıları arttığında işler ciddiye binmekte. Bu yüzden böyle bir işlem yapmanız zaman ve kalite açısından önemli olacaktır. Kodlarımız şu şekildedir.

Satır satır ilerleyelim.

  • Clear all ; clc; Workspace’i ve Command Window’u temizledik.
  • d=dir; Seçili klasördeki dosyaların isimlerini değişkenine atadık.
  • str={d.name} ; Dosya isimlerini string haline getirdik.
  • dosyasayisi ; Kaç adet dosya gireceğini kullanıcıya soruyoruz.
  • [sut,sat]; bunlar şu anlama gelmektedir. Satır ve sütun. Yani listdlg fonksiyonundan seçtiğimiz verilerin hangi satır ve hangi sütunda olduğunu kaydediyorlar.  O dosyaların kaçıncı sırada olduğunu bulmamız gerekmekte. Listdlg fonksiyonun kullanımı da o şekildedir.
  • secilen=struc2cell(d); yukarıya baktığınızda d bir yapı halindedir. Bu yapıdaki isimleri okuyabilmemiz için diziye çevirmemiz gerekmekte.
  • Daha sonrasında dosya sayısı adedince her bir dosyayı okuyabilmek için for döngüsünü kullanacağız.
  • Kullanıcı tarafından seçilen dosyaların isimlerini filename(1,k) lik bir değişkene atıyoruz.Bunu da seçilen listedeki 1,sut(1,k) ile yapıyoruz.
  • Dosya adını string haline dönüştürüyoruz. Bunu yapmamızın sebebi ise şudur. Dışarıdan bir dosya okunacağı zaman okunan dosyanın ismini ‘ ‘ tırnak işareti ile girmeniz gerekmekte. Çünkü String ifadeler Matlab ortamında öyle tanımlanmaktadır.
  • sonrasında ise veriler diye bir değişken oluşturarak dosyaları okuyabilirsiniz. Birazdan yapacağımız işlemlerde her bir dosya için tek tek veri okuyacağız. O yüzden o şimdilik kalsın.

Programımızı çalıştıralım.

Şimdi verileri inceleyelim.

Liste diyalog açmamızın tek sebebi listedeki satır ve sütunu sayısını bulmak. Mesela 4,1 deki elemanın adı veriler1 olsun. O 4,1 deki verinin nerede olduğunu yani kullanıcının hangisini veya hangilerini istediğini bulmaktı.

Şimdide şöyle bir işlem yapalım. Her bir dosyanın 1.sütununda ki verilerin toplamını, 2.sütununda kilerin ortalamalarını, 3.sütunda kilerinde standart sapmasını hesaplayalım. Sonrasında ise onları bir yeni bir Excell dosyası oluşturarak Excell dosyasına kaydedelim. Excell dosyasının adını da kullanıcıya soralım.

Verileri işleyebilmek için şu kodları yazacağız.

Şimdi sıra yeni bir Excell Dosyasını okumaya geldi. Bütün kodları beraber yazalım.

Programımızı çalıştırıp yukarıdaki adımları geçelim.

Yukarıda ki gibi bir hata verecektir. Bu hatanın sebebi girdiğimiz Worksheet isminin bulunamayıp yeni bir worksheet oluşturduğunun bildirisidir. Şimdide oluşturduğu dosyaya bakalım.

Gördüğünüz gibi yeni bir Worksheet oluşturdu. Başlıklar ve dosya numaraları olmasını istediğimiz yerlerdeler. 

Her türlü görüş, öneri ve sorularınız için ademirkaya@industryolog.com adresine mail atabilir daha fazla soru çözümü için http://alidemirkaya.net/ adresini ziyaret edebilirsiniz. Bir sonraki yazımda görüşmek dileğiyle esen kalın.

 

Facebook Sayfamizdan Bizleri Takip Edebilirsiniz
Ali Demirkaya

Balıkesir Üniversitesi Endüstri Mühendisliği Öğrencisiyim

http://alidemirkaya.net