Soru sorHarmonik analiz için Fast Fourier Dönüşümü
Alperen tarafından 4 yıl önce soruldu

Merhaba,
Toplamda 10000 veriden oluşan bir veri setinin sinüsoidal "akım", gerilim" ve son olarak zamanı temsil eden üç grafiğini inceliyorum. Amacım bu 10000 veriden bir periyodunu ayırıp (5000), ayırdığım periyotta FFT ve toplam harmonik bozulmayı analiz etmektir. Aşağıda veri setini ve çalışmam içinden arayüze ait bazi bilgileri ve grafikleri görebilirsiniz;

Resimde 3-10002 arası veriler görülmektedir. (Range). Görünüm ise table yerine matrix olarak ayarlanmıştır.

1. Sütun zaman verilerinin grafiğidir.

2. Sütun sinüsoidal gerilim,

3. Sütun verilere ait akım grafiğini göstermektedir.
Görüldüğü gibi, bu akım ve gerilim grafikleri tam sinüsoidal olmayıp üzerlerinde harmonik bozulmalar mevcuttur.
Bu verilerin, en azından bir periyodunun, (5000 veri) FFT harmonik analizini görmek için ne yapabilirim? (örneğin 1-3-5-7. harmoniklere kadar)
 
Zamanınız için teşekkürler.

9 Cevap
En iyi cevap
sayginer Yönetici tarafından 4 yıl önce cevaplandı

Merhaba,
Görsel 3teki grafiğin bozulmalara rağmen FFT'sini alarak çizdirmeyi denediniz mi? Aşağıda örnek bir FFT kodunu bulabilirsiniz.

T = 0.0000400000000; % Ornekleme Periyodu
Fs = 1/T; % Ornekleme Frekansi
%
SinyalVerisi = readmatrix('VeriDosyanizinAdi.txt');
L = length(SinyalVerisi(:,5)); % Sinyal uzunlugunuz
t = (0:L-1)*T; % Zaman Vektoru
%
X = SinyalVerisi(:,5); %FFT almak istedigimiz verinin dosyadaki konumu
Y = fft(X);
%
P2 = abs(Y/L);
P1 = P2((1:(L/2+1)),1);
P1(2:end-1) = 2*P1(2:end-1);
%
f = (Fs*(0:(L/2))/L);
plot(f,P1,'Linewidth', 1.5); grid on; axis tight; hold on;
xlabel('Frekans (Hz)')
ylabel('Genlik (a.u.)');
Alperen tarafından 4 yıl önce cevaplandı

readmatrix komutu öncesinde "SinyalVerisi" olarak ifade ettiğiniz şey veri setine ait dosyanın ismi midir? eğer dosya ismi ise bunu girmeme rağmen hata alıyorum.

Alperen tarafından 4 yıl önce cevaplandı

daha doğrusu, readmatrix MatlabR2018b'de bir undefined function olarak belirtiliyor.

sayginer Yönetici tarafından 4 yıl önce cevaplandı

Evet, verilerin yer aldığı dosya. Uzantısını .txt yerine sizin dosya uzantınızı dosya adında boşluk be Türkçe karakter olmadan girmelisiniz.

sayginer Yönetici tarafından 4 yıl önce cevaplandı

readmatrix MATLAB 2019 ve sonrası için tanımlı bir fonksiyon. Alternatif olarak yukarıdaki sizin verdiğiniz örneklerde veriyi çekmek için kullandığınız fonksiyonu da kullanabilirsiniz.

Alperen tarafından 4 yıl önce cevaplandı

10000×3 double olarak kullandığım workspace içindeki bu veri seti bir CSV excel dosyasına ait. Bu dosyayı dlmread ile çekerek işlemi yaptırdım ancak çıkan sonuçlar makul değil,


Veri setindeki birinci sütunda yer alan zaman eksenini revize ederek 0'dan başlattım ve aşağıdaki grafikte görüldüğü gibi, T=0.02 alma nedenim,

grafikteki bir periyodu incelemektir. Ancak FFT analizi gördüğünüz gibi ilk resimdeki haliyle geldi. T Örnekleme periyoduna ilişkin bir tavsiyeniz veya uyarmak istediğiniz başka herhangi bir konu var mı? 
 

sayginer Yönetici tarafından 4 yıl önce cevaplandı

Örnekleme zamanını (sampling time, sampling period) verinize göre yazmalısınız. Sizin verinizdeki 1. sütünda bulunan verilerin artış miktarı olacak bu (3.9 e-6 gibi bir şey gördüğüm kadarı ile.).

Alperen tarafından 4 yıl önce cevaplandı

Evet örnekleme periyodunu değiştirip 0.00000399910000000239 olarak kullandım ancak burada paylaştığım gibi ilk resimdeki FFT'den farklı bir sonuç vermedi. Teşekkürler.

sayginer Yönetici tarafından 4 yıl önce cevaplandı

0 frekans değeri yüzünden görüntüdeki diğer frekans bileşenlerini göremiyorsunuz (görüntü boyutundan dolayı.).Frekans grafiğinizin x ekseninde yakınlaşma yapar mısınız?