Merhaba, matlab excelden veri okuma işlemini anlatacağım yeni yazımıza başlıyoruz.
Bu yazımda sizlere, matlab excelden veri okuma yöntemini ayrıntılı bir şekilde yazacağım.
Editörün Önerisi: Katsayılar MatrisiMatlab ile Excel dosyası okuma ( matlab import data from excel ) ile ilgili fonksiyonumuz olan xlsread fonksiyonumuzun özelliklerini açıklamalı ve örnekli olarak inceleyeceğiz.
Hiç vakit kaybetmeden işe başlayalım.
Yazıya oy vermek isteyebilirsiniz. Oy vermek için yorum yapınız lütfen. Mevcut puan şu şekildedir.
Matlab Excelden Veri Okuma
Öncelikle excelden veri okuma fonksiyonumuzun söz dizimi yani syntax’ına bakalım.
Syntax ( Söz Dizimi )
num = xlsread(filename) num = xlsread(filename,sheet) num = xlsread(filename,xlRange) num = xlsread(filename,sheet,xlRange) num = xlsread(filename,sheet,xlRange,'basic') [num,txt,raw] = xlsread(___) ___ = xlsread(filename,-1) [num,txt,raw,custom] = xlsread(filename,sheet,xlRange,'',processFcn)
Şimdi satır satır bu kullanımların ne işe yaradığından bahsedelim.
1. Satır: filename, yani okunacak olan excel dosyasının adını(yolunu) girmelisiniz. Eğer .m file ile excel dosyanız aynı klasörde bulunuyorsa yalnızca ismini girmeniz yeterli olacaktır.
2. Satır: sheet, özel olarak bir çalışma kitabının içerisinde ki bölümleri ifade eder. Sayfa1 (0) Sayfa2 (1) için parantez içerisinde geçerli numaraları verilmiştir. Örnek görsel aşağıdadır.
3. Satır: xlRange, bir bölgeyi belirlemek için kullandığımız parametredir. Mesela A sütununun ilk 3 satırını almak istediğimizde (A1:A3) yazmamış gerekiyor. Tüm sütün için (A:A) gibi bir yazım kullanıyoruz.
5. Satır: ‘basic’, eğer bilgisayarınızda excel yoksa bu parametre sayesinde basit bir şekilde tüm veriyi alabilirsiniz.
6. Satır: Excel içerisinde bulunan verilerin num ( number-sayı) txt (text – metin) gibi ayrılarak ayrı ayrı dizilere atandığı yazım şeklidir.
7. Satır: ___ = xlsread (filename, -1) kullanımı sizin için güzel bir seçenek olabilir. Eğer bilgisayarınızda windows işletim sistemi ve excel programı kurulu ise bu seçenek ile interaktif olarak okuyacağınız veriyi seçebilirsiniz. Bilgisayarınız excel programını başlatacak ve sizden okumak istediğiniz bölgeyi seçmenizi isteyecektir.
8. Satır: Tüm parametreleri açıkladığımız için bu satırı açıklamış olduk.
Örnekler
degerler = {1, 2, 3 ; 4, 5, 'x' ; 7, 8, 9}; baslik = {'Sutun1','Sutun2','Sutun3'}; xlswrite('ornek.xlsx',[baslik; deger]);
Sutun1 Sutun2 Sutun3 1 2 3 4 5 x 7 8 9
Şimdi oluşturduğumuz ‘ornek.xlsx’ isimli excel dosyasından veri okuma işlemini yapalım.
filename = 'ornek.xlsx'; A = xlsread(filename) % Burada filename bir değişkendir ve istediğiniz ismi kullanabilirsiniz. % Bu kod ile elde edilecek matris aşağıdaki gibi olacaktır. A = 1 2 3 4 5 NaN 7 8 9
Gördüğünüz gibi xlsread fonksiyonunun kullanımları bu şekilde. Şimdi gelelim özel örneğimize. Bu örnekte sizlere dosyanızı seçmeniz için bir arayüz açılacak ve dosya(excel) seçimini yaptıktan sonra verilerinizi alacaksınız.
[tdosyaAdi,PathName] = uigetfile({'*.xls;*.xlsx;'},'Dosya Seçiniz'); dosyaAdi=[PathName tdosyaAdi]; %Veriler okunuyor. veriOku=xlsread(dosyaAdi,1,'A:A'); %Örneği kendinize göre düzenleyebilirsiniz.
Bu makalem burada bitiyor. Umarım faydalı olmuştur. Eğer faydalı bulduysanız bunu söylemekten çekinmeyin. 🙂 Paylaşmak ve yorum yapmak gibi aktiviteler beni yeni paylaşımlar yapmak adına tetikleyecektir. Okuduğunuz için teşekkür ederim.
merhaba hocam
Elimdeki boru çapları, çapların tek tek boru maliyeti ve mevcut boruların uzunlukları excelde verildiği gibidir.
programın her boru için bi çap belirleyip o çapa ait birim maliyeti baz alıp uzunlukla çarparak toplam maliyeti bulmak istiyorum verileri excelden aktardım sonrasında sürekli hata veriyor bunu nasıl yapabilirim.
merhaba hocam elimde bazı boru çapları ve bu çaplara denk gelen maliyetler var bunları uzunluğu farklı olan boru uzunlukları ile çarparak toplam şebekenin boru maliyetini bulmak istiyorum. bu verileri excel’den aktardım işlem yapmaya çalışıyorum sürekli hata veriyor.
Hocam Merhaba, excelde bist100 verilerim var ve bunu matlab’e aktarmak istiyorum. bistdata=xlsread(‘bistveri.xlsx’) komutunu deniyorum ancak matlabte [] şeklinde alıyor ve vektör içerisinde veriler yok. excelde yer alan verilerim tek sütunluk 255 veriden oluşmakta bu sorun neden kaynaklanıyor ve nasıl çözebilirim bilgi verebilir misiniz.
Veri türünden dolayı yapabilir. [num,txt,raw] = xlsread(‘ornek.xlsx’) şu kullanımı tavsiye ederim. Yine sıkıntı yaşamanız durumunda dosyayı mail ile gönderebilirsiniz. Müsait olduğumda bakarım. Kolay gelsin.
Merhaba Hocam,
Elimde 3 sütundan oluşan; 1. sütununda yanca açısı değerlerinin, 2. sütunda yükseliş açısı değerlerinin ve 3. sütunda yanca ve yükselişçe açısına göre karşılık gelen genlik değerlerinin olduğu dosyam var. (Excel ya da notepad olabilir.) Bazı işlemler ile bulduğum yanca ve yükselişçe değerine karşılık gelen genlik değerini çekecek bir kod yazmam gerekiyor. Fakat bulduğum yanca ve yükselişçe açıları aynı satırda olmayabilir, her sütunu kendi içinde kontrol ettikten sonra genliği çekmem gerekli. Hangi fonksiyonu kullanmam gerekir. Yardımcı olabilirseniz çok memnun olurum.
Genlik ile yanca ve yükseliş açıları arasındaki bağlantı nedir? Sutunlar arasındaki bağıntıyı tam olarak anlamadım. Örneğin bir değer buldunuz ve bunu 1. sutunda aradınız. 1. sutunda bu değeri bulduğunuzda satır bilgisini mi almanız gerekiyor? Bu satıra karşılık gelen diğer sutunlardaki değeri birbirine bağlayan bir anahtar olması lazım.
Öncelikle cevap verdiğiniz için gerçekten çok teşekkür ederim. Sütunlar arasındaki bağıntı benim elimde yok. Basit bir şekilde aşağıya daha iyi anlaşılması için bir örnek yazdım hocam. Daha önce bulduğum 1. sütun değeri 4 , 2. sütun değeri 1 olduğunda bu değerlere karşılık gelen 3. sütun değerini dosyadan matlab koduna çekmeye çalışıyorum. 1.sütun 2.sütun 3.sütun 1 0 20 2 0 25 3 0 -28 4 0 -7 5 0 13 1 1 38 2 1 26 3 1 -27 4 1 -30 (Örnek: 1. ve 2. sütun değerlerine göre bu satırdaki -30’u çekmem gerekiyor.) 5 1 45 1 2 90 2… Devamını oku »
Eğer aşağıdaki koddan anlamazsanız açıklamasını detaylı olarak müsait bir vaktimde yapacağım. Durumu bildirin.
Kodu anladım hocam gerçekten çok teşekkür ederim fakat bir sorum olacak; excel deki verileri kodda array olarak yazmam mı gerekir. Benim dosyamda 64 bin küsür satır olacak, bu şekilde kodda array yazmadan dosyadan okumamın bir yöntemi var mıdır?
Hayır tabiki böyle bir şey mümkün değil. Yukarıdaki excelden veri alma yöntemlerini kullandığınızda verinizin 64 bin küsür satır ve 3 sütun şeklinde tek bir matris olarak geldiğini göreceksiniz. Bu durumda
a=1;
aDegeri=4;bDegeri=1;
for i=1:length(DATA)
if DATA(i,1)==aDegeri
if DATA(i,2)==bDegeri
cDegeri(a,1)=DATA(i,3);
a=a+1;
end
end
end
cDegeri
şeklinde işinizi çözebilirsiniz. Şartı sağlayan birden çok değer olabilir diye cDegerini matrise çevirdim.
Sorun çözüldüğünde dönütünü bekliyorum.
Evet hocam veri seti excel olduğunda problemim çözüldü, 3. sütun değerini verdi. Çok teşekkür ederim ilginiz ve alkanız için, çok mutlu oldum.
Fakat bir soru daha sormak istiyorum hocam size müsadeniz olursa, çokta mahçubum fazla rahatsız ediyorum diye, benim datam notepad’te binary formatta olursa nasıl yapmam gerekir? Binary formatta olmasa en kötü ihtimalle excel doyasına aktarıp yine bu kodu kullanabilirim fakat binary olması problem olur mu diye düşünüyorum.
Değişen hiç bir şey yok. https://www.mathworks.com/help/matlab/ref/fread.html bu konuyu incelemeni tavsiye ederim.
Kolay gelsin. Ara sıra uğra.
Çok teşekkürler hocam ayrıca hemen inceliyorum, elbette uğrarım siteyi favorilere aldım 🙂
Sizede iyi çalışmalar, saygılarımla.
Merhaba hocam
Elimde 5100 satırlı 2 sütunlu excel dosyası var bu verileri matlab üzerinde nasıl grafiksel şekilde gösterebilirim ?
https://www.mathworks.com/products/matlab/plot-gallery.html
Şu adresi incelemenizi tavsiye ederim.
hocam merhabalar elimde 92709 satırlık excel bilgileri var bu bilgiler atıyorum 40 42 şer şekilde grup halinde.Yani aynı rakama sahip olan satırlar bi grubun verisi. Zaten sıralı bir şekildeler ben her grubu excelden matlabde mat file olarak elde etmek istiyorum ama tek tek raw sayılarını yazmamın imkanı yok nasıl yapabilirim acaba? (aklıma gelen şu ilk satırdan başla bu satır değişene kadar olan aralığıo belirle ve kaydet sonra bu verileri yazdır mat file yap ama bu döngüyü nasıl yapabilirim)
Bir for döngüsü oluşturup veri boyutunuz kadar döndürürken ilk id ile sürekli sonraki id yi karşılaştıracaksınız. Karşılaştırma eşit olana kadar bir matris içine(Gruplar) gelen veriyi ekleyeceksiniz. Karşılaştırma eşit olduğunda o veriyi bir isimle yeniden kaydedip örneğin Grup1=Gruplar; daha sonra clear Gruplar diyerek gruplar verisini silip döngüyü başa döndüreceksiniz fakat bu arada yeni gelecek verilerle Gruplar matrisi atıyorum 60. satırdan başlayacak ve üst satır sütünlara 0 yazılacaktır. Grupların kaydetmesini yapmadan 0 olan sütunları silen bir kodu “x(x==0)=[]” da oraya eklemelisiniz. Yahut ilk döngünüzün kaçıncı satırda bittiğini de tutup verilerinizin olduğu matristen bu kadar satırı silmelisiniz ve tekrar length hesaplatarak döngüye girmelisiniz.… Devamını oku »
6 kolonlu bir veri grubum var fakat sadece 5 kolonunu alıyor 🙁
Veri grubundan örnek gönderir misiniz?
Merhaba,
Excelden Matlab’a almak istediğim verilerin içinde – işareti olan sayı dizileri var ve Matlab bu sayıları görmüyor NaN olarak aktarıyor. Yardımcı olabilirseniz çok sevinirim.
[num,txt,raw] = xlsread(___) şeklinde kullarsanız hepsini alacaktır. Fakat https://www.mathworks.com/help/matlab/ref/readtable.html bu konuyu incelemenizi öneririm.
uzakliklar=xlsread(‘ilmesafe.xls’)
Error using xlsread (line 251)
File could not be read by biffparse. Invalid record ID.
hatası alıyorum:( çözümünü bilen?
macbook excel sürüm15.21 matlab sürüm R2015b
Bu sorun linux ve mac kullanıcıları için geçerli bir problem. Geçici çözüm ise excell dosyanızı olabilecek en eski sürüm olarak kaydedin. Sorunu yaratan biçimlendirmeler ortadan kalkacak ve sorun düzelecektir.