Arkadaslar merhaba,,
Elimde her biri 300 Mb dan büyük 4-5 adet büyük excel data lari var. biz bu verileri kiyaslama yapmak amaciyla üst üste bindirilmis sekilde grafik haline dönüstürüp sirketteki sunumda ilgili birimlerle analiz etmek istiyoruz. Asagidaki sekliyle bir komut yazdim örnek olarak:
data1=uigetfile('*.*','1'); data2=uigetfile('*.*','2'); a=xlsread(data1); b=xlsread(data2); year1=a(:,1); month1=a(:,2); day1=a(:,3); hour1=a(:,4); min1=a(:,5); second1=a(:,6); milisec1=a(:,7); force1=a(:,8); year2=b(:,1); month2=b(:,2); day2=b(:,3); hour2=b(:,4); min2=b(:,5); second2=b(:,6); milisec2=b(:,7); force2=b(:,8); x= datetime(year1, month1,day1,hour1,min1,second1,milisec1); y= datetime(year2, month2,day2,hour2,min2,second2,milisec2); plot(x,force1,'r'); hold on plot(y,force2,'b'); title("Data"); xlabel("Time"); ylabel("(kN)"); grid on; figure
Ilgin bir sekilde kod bir hata bile vermeden ilk seferde calisti =)
Ancak cok okunabilir bir halde degil. (Resim yüklemeye calisiyorum. Olmazsa ilgilenene özelden de gönderebilirim.)
Üst üste bindirilmis grafikler icin farkli bir önerisi olan varsa lütfen ve acil olrarak konunun altina yorum ve fikirlerini paylasabilirse cok mutlu olurum.
Tesekkürler…
Sorununuzun grafik çizdirmeyle değil verinizle alakalı olduğunu düşünüyorum. Anladığım kadarıyla çok daha az salınımlı, düz grafikler istiyorsunuz. Bunun için aşağıdaki linkteki smoothdata() fonksiyonunu kullanmayı deneyebilirsiniz:
https://www.mathworks.com/help/matlab/ref/smoothdata.html
Merhaba,
Görsel yüklemek için aşağıdaki adımları izleyebilirsinizŞ
- Görselinizi bir herhangi bir görüntü yükleme sitesine yükleyin. Örn: https://imgyukle.com
- Daha sonra yüklediğiniz görselin bağlantısını aşağıda da gösterilen imge'ye tıklayarak yapıştırın
Merhaba,
Grafikle ilgili nasıl bir okunabilirlik sorunu yaşadığınızı daha açık belirtebilir misiniz? Figürü kaydettiğinizde yazılar küçük mü kalıyor? Yoksa çizgi grafikleriyle ilgili bir sorununuz mu var? Resim buraya yükleyemezseniz, hakkanscaldag@gmail.com adresine gönderebilirsiniz.
Lütfen mümkün olduğunca görselleri bu sayfa üzerinden payşalım ki ileride de aynı sorunu yaşayacak kişiler de fayda sağlayabilsin.
Örnek resim olarak bunlari gönderebilirim. 2.resim zoom yapilmis hali. Asagidaki zaman ifadesinden de anlasilabilecegi üzere. baya bir yakinlastirirsak belki daha net olabilir ama yine de icime sinmedi gibi.Expert lerin fikirlerini duymak daha iyi olur bence =) Tesekkürler
Bu arada hold on komutunu kullanmadan plot(x,force1,'r',y,force2,'b'); seklindede yazabiliriz saniyorum.
@hakkans benim kodumun neresine smoothdata() yi monte etmeliyim. Su sekilde mi;
...
...
x= datetime(year1, month1,day1,hour1,min1,second1,milisec1); y= datetime(year2, month2,day2,hour2,min2,second2,milisec2);
AA= smoothdata(x);
BB= smoothdaza(y);
…
…
Tam olarak nasil oluyor?
Sizin x değil y datanızı smooth etmeniz lazım. O yüzden sadece aa=smoothdata(x) demeniz gerekli. Tabii filtreleme isteğinize göre birkaç ek ayar da yapabilirsiniz. Savitsky-Golay filtresi bildiğim kadarıyla bu tip datalarda iyi oluyor. Onu kullanmak için aa=smoothdata(x,'sgolay') gibi bir komut kullanmanız gerekiyor.
Savitzky-Golay filtresini denedigimde resimdeki hatayi aliyorum. Konuyla ilgili Support-Team e mail attim cevap bekliyorum.
–> Smoothdata() komutunu calistirdigimda ise asagidaki ekran ciktisiyla karsilasiyorum.
…
…
smoothdata(y,force2);
….
….
olarak da yazdim ayni hatayi aliyorum. Sorun nerede? smooth komutunu kullanirken nerede hata yapiyorum??
- Savitzky-Golay filtresini kullanabilmeniz için gerekli olan Signal Processing Toolbox sizde yok gözüküyor. Onu yüklemeniz gerekiyor. Bkz: https://uk.mathworks.com/videos/add-on-explorer-106745.html
- Burada tarih ve zaman verisi kullaniyorsunuz. smoothdata fonksiyonunu kullanabilmek için nümerik veriler girmelisiniz. Nitekim aldığınız uyarılar da bunu belirtiyor. Tarih verisini nümerik veriye çevirmek için:
https://uk.mathworks.com/help/matlab/ref/datenum.html
https://uk.mathworks.com/help/matlab/ref/datetime.yyyymmdd.html
Selamlar tekrardan, simdi de bu hata cikti. Kodu inceler misiniz nerede hata yapiyorum? Vallahi gicik oldum biraz. Zaten expert degilim en son unide kullanmistim simdi tekrar ögrenmeye calisiyorum kendim.
Tesekkürler
Merhaba,
İki grafiği aynı anda çizdirmeye çalıştığınız için hata alıyorsunuz. x veriniz datetime formatında iken smth dediğiniz veriyi datenum ile başka bir formata çevirmiş oluyorsunuz. Ayrıca dün konuştuklarımızdan anladığım kadarıyla smoothdata fonksiyonunu sadece force1 ve force2 vektörlerine uygulamanız gerekiyor. Böyle yaptığınızda bu hata da ortadan kalkacaktır.