C ile FFT kodlama

Başlatan Kaanx, 20 Eylül 2013, 23:51:34

berat23

@Icarus
ohm kanunu siz denediğinizde farklı mı çıkıyor ? ben bir mühendis olarak bildiğim yasaları denemem. bize mühendislik bilimsel metodlara dayanır diye öğrettiler, size ad-hoc dedilerse bilemiyorum.

kare dalga örneğimde harmoniklerin ne olduğunu çok iyi anlattım, kareden kastım içinde çokça harmonik olmasıydı. yoksa neredeyse tüm fiziksel sinyaller ideal değildir, sinüs bile olsa harmonikler vardır. 2fs de max. frekanslı sinüs için geçerlidir. cümlenin başını sonunu kesip kendinize uydurmayn. 10 kat muhabbetinin de bilimsel açıklamasını yaptım, orda nyquist sampling teorisine aykırı birşey yok, kalite-maliyet takasında varılmış bir kabullenme. 20fs ile örneklemek 10fsden iyidir desem illa 10 yeterlidir mi diyeceksiniz?

ayrıca diğer mesajlarınıza da baktım, sürekli insanlara o yanlış bu yanlış deyip birşey anlatmamışsınız. böyle devam edecekseniz tartışmayalım. bilginiz varsa, eğri doğru neyse söyleyin, bizde bilmiyorsak öğrenelim. derdiniz atışmaksa ben yokum.


Kaanx

Hocam bilgilendirmeleriniz için cok sağolun fakat burada sorun biz TÜRK ler olarak böyle birşeyi nasıl kendimiz yapabiliriz buna çözüm bulalım ben bir mühendis adayı olarak sizlerin yardımına ihtiyacm var

z

#17
Kendin yapmak istiyorsan temelini bileceksin.

Bu isin temeli nedir?

Isin icine elektronigi hic sokmadan matematiksel olarak kagit kalemle yapmayi becerebilirsen bunu digitale uyarliyabilirsin.

Soru: Farkli genlik ve frekansdaki sinusel sinyallerin toplamindan ibaret bir fonksiyonun zamanin degisimine karsin verdigi degerleri iceren numerik bir tablon var.

Sana diyorlarki al bu tabloyu ve bize fonksiyonu bul. (sinuslerin frekansini ve genliklerini bul)

Sen numerik verilerle ugrasmayacaksin. Sen matematik yontemi bulacaksin.

Bu soruna cevap getirebiliyorsan daha sonra bunu program haline getirmeyi denersin ve artik bilgisayar senin yerine numerik tabloyla ugrasir. Daha sonra da adamlar bu isi nasil hizlandirmanin yolunu bulmuslar onu ogrenirsin.

Ip ucu istersen

sin(a+b)=sin(a)cos(b)+sin(b)cos(a)
sin(a-b)=sin(a)cos(b)-sin(b)cos(a)

cos(a+b)=cos(a)cos(b)-sin(s)sin(b)
cos(a-b)=cos(a)cos(b)+sin(s)sin(b)

e^jx=cos(x)+jsin(x)

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

berat23

@Kaanx

hocam bence z'nin önerisine uyun, sizin yerinizde olsam uygulama yazmak yerine işin teorisini anlamaya bakardım.neyi bilip neyi bilmediğinizi bilmiyorum ama baştan örnekleme, fourier açılımı-transformu, fft diye kağıt kalem dener, sonra matlab gibi bir oramda fft uygulaması yazar, en son işlemciye atıp denerdim. o videolarda gördüklerin bence çok önemli değil, ne olduğunu anlamadıktan sonra ezbere yapmanın bir mantığı yok. sonra 10fs 20fs muhabbetine dönüyor. o yüzden zaman varken teoriye çalışmak daha iyi.

Icarus

@Kaanx
Z'nin dediklerine uyun fakat unutmayın TextBook'lar size sadece bir fikri açıklamak için yazılmışlardır. Fiziksel dünya'nın matematiksel olarak modellenmesini anlatmazlar. Buna dikkat etmezsiniz ohm kanunun gerçek olduğunu ve çalıştığını düşünen mühendislere katılırsınız.

PS: Ohm gerçek mi değil mi tartışmalarına hiç girmeyeceğim. Eğer doğru olduğunu düşünüyorsanız bir fizikçiye veya bir RF Müh'e sorun.

OptimusPrime

#20
Icarus
elektronikte bir çok yerde lineer ve nonlineer kavramları var. mesela nonlineer bir sistemi lineer olarak modelleyip (smps gibi) buna bir kompanzatör (plant a) tasarlayabiliyoruz. bu bir yaklaşım şekli.

ohm kanunu da öyle. ohm deneysel yöntemlerle bir eşitlik buluyor fakat bulduğu şey aslında I-V nin lineer kabul edilmesi ile bulunan bir denklem. halbuki bu denklemin temelinde elektrik alanda mevcut ve ohm un denklemi elektrik alanın 2.59kV/cm yi geçmesinden sonra doğruluğunu yitiriyor ki mikro veya nano seviyelerdeki dirençlerin hesaplanamamasının temel nedeni de bu.

hal böyle olunca ohm kanunu tamamen gerçek dışıdır ve işe yaramaz diyemeyiz. ayrıca yerine kullanabileceğiz başka bir denklemde yok... :)


https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

berat23

nasıl otomobillerin hareketi newton mekaniği ile modelleniyorsa burada bahsedilen devreler için ohm kanunu geçerlidir. ohm kanununun nonlineer yüklerde geçerli olmaması her kullanımının denenmesini gerektirmiyor. ayrıca bu yasalar uzaydan gelme dayatmalar değil, fenomenlere dayanıyor.

quantum mekaniği ile hareket ediyorsanız ona lafım yok.

z

Bir direnç, içinden akım geçtiği için ısınır ve değer değiştirir. Bu durumda V=R*I bağıntısı karmaşık bir hal alır.

Bir direnç aynı zamanda endüktif ve kapasitif bileşenlere sahiptir. Bu da direncin yüksek frekansdaki davranışını ohm kanunu ile ifade edilemeyecek derecede zorlaştırır.

Fakat bunlar işin hikaye kısmı. Bizim meslekte pek çoğumuzun uğraştığı uygulamalarda toleranslar anormal derecede büyük. 1K da taksak çalışır 10K da taksak çalışır.

Nerede tolerans önemli nerede kapasitif, endüktif bileşenler önemli, nerede ısıl değişim önemli bunları bilmek lazım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Kaanx

Alıntı yapılan: z - 23 Eylül 2013, 02:09:36
Kendin yapmak istiyorsan temelini bileceksin.

Bu isin temeli nedir?

Isin icine elektronigi hic sokmadan matematiksel olarak kagit kalemle yapmayi becerebilirsen bunu digitale uyarliyabilirsin.

Soru: Farkli genlik ve frekansdaki sinusel sinyallerin toplamindan ibaret bir fonksiyonun zamanin degisimine karsin verdigi degerleri iceren numerik bir tablon var.

Sana diyorlarki al bu tabloyu ve bize fonksiyonu bul. (sinuslerin frekansini ve genliklerini bul)

Sen numerik verilerle ugrasmayacaksin. Sen matematik yontemi bulacaksin.

Bu soruna cevap getirebiliyorsan daha sonra bunu program haline getirmeyi denersin ve artik bilgisayar senin yerine numerik tabloyla ugrasir. Daha sonra da adamlar bu isi nasil hizlandirmanin yolunu bulmuslar onu ogrenirsin.

Ip ucu istersen

sin(a+b)=sin(a)cos(b)+sin(b)cos(a)
sin(a-b)=sin(a)cos(b)-sin(b)cos(a)

cos(a+b)=cos(a)cos(b)-sin(s)sin(b)
cos(a-b)=cos(a)cos(b)+sin(s)sin(b)

e^jx=cos(x)+jsin(x)

Hocam DSP dersleri aldım DFT ve FFT görmedim kendi çalışmalarımda bunları aşmaya çalısıyorum teşekkür ederim bu dediklerniz sayesinde kafamda birkaç bişi oturdu. Genliği ve frekansı hesaplamayı oradan güce geçmeyi deneyebilirim. Fakat burada sorun şurada benim için gelen bir sesin nyquist hızında örneklenip Uygulamada 2.2 *Fö olarak alırsak bundan sonraki her bir örneğim benim için artık durağan bir süreç midir ? Ve bu aldıgım örneklerin mi Fourier dönüşümünü yapıcam ?

mufitsozen

Alıntı yapılan: Kaanx - 23 Eylül 2013, 17:09:22
Hocam DSP dersleri aldım DFT ve FFT görmedim kendi çalışmalarımda bunları aşmaya çalısıyorum teşekkür ederim bu dediklerniz sayesinde kafamda birkaç bişi oturdu. Genliği ve frekansı hesaplamayı oradan güce geçmeyi deneyebilirim. Fakat burada sorun şurada benim için gelen bir sesin nyquist hızında örneklenip Uygulamada 2.2 *Fö olarak alırsak bundan sonraki her bir örneğim benim için artık durağan bir süreç midir ? Ve bu aldıgım örneklerin mi Fourier dönüşümünü yapıcam ?

nyquist teorik olarak ornekleme hizinin en az 2f olmasini soyler ama pratikte ornekleme frekansini cok daha fazla tutmak ihtiyatli olur.

resimde referans sinyal ve 1f, 2f, ve 3f ornekleme ile cikabilecek sonuclar gorulebilir



Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

Kaanx

Alıntı yapılan: mufitsozen - 23 Eylül 2013, 17:21:17
nyquist teorik olarak ornekleme hizinin en az 2f olmasini soyler ama pratikte ornekleme frekansini cok daha fazla tutmak ihtiyatli olur.

resimde referans sinyal ve 1f, 2f, ve 3f ornekleme ile cikabilecek sonuclar gorulebilir

(Resim gizlendi görmek için tıklayın.)

Yani en yakın değerleri Nyquist ile yakalamakta oldugumuzu kanıtladık hocam burada anladım. Peki size bir sorum olucak. Şimdi şekildeki resimde referans bir sinyalimiz mevcut zannerdersem ki zaman domeninde dogru muyum ? . Şimdi ben bu sinyalden atıyorum 256 örnek almak istedim. bu aldıgım örnekleri bir bufferda mı biriktiriyorum eger öyleyse aldıgım örnek sinyaller zaman domeninden cıkmıs olmuyor mu ?

mufitsozen

Alıntı yapılan: Kaanx - 23 Eylül 2013, 17:38:27
Yani en yakın değerleri Nyquist ile yakalamakta oldugumuzu kanıtladık hocam burada anladım. Peki size bir sorum olucak. Şimdi şekildeki resimde referans bir sinyalimiz mevcut zannerdersem ki zaman domeninde dogru muyum ? . Şimdi ben bu sinyalden atıyorum 256 örnek almak istedim. bu aldıgım örnekleri bir bufferda mı biriktiriyorum eger öyleyse aldıgım örnek sinyaller zaman domeninden cıkmıs olmuyor mu ?

sayin @z hocam, imdakk! bilmedigim yerden soru soruyorlar!  :)

valla benim bu konularda bilgim cooook eskide kaldi, bunama durumlrida olabilir ama, samplelar belli bir zaman araliginda alindigina gore time domainden cikip, uzay domainnemi gidecek bunlar? isinlanacakmi ? :P
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

berat23

aldığın sample'lar aslında time domaininde oluyor. ft yaparsan frekans domainine geçersin.

fft ya da stft(aslında yapacağın)  almak istersen buffer'da tutacaksın ama bu konu şimdilik senin açından birşey ifade etmiyor.


OptimusPrime

mufitsozen
pratikte ohm kanunu çatırdadı sıra nyquist te heralde  :D

pratik ile teori hiçbir zaman çelişmez. çelişiyorsa biz yanlış anlamışız veya uygulamışızdır.

nyquist teoreminde sinüsoidal bir işaretin örneklenmesinden bahsediyor ki ispatıda yapılmış bir teoremdir bu. basit olarak matlab ile de denenebilir. f freknasında bir sinüs alın 2f ile örnekleyin fourier dönüşümünü alın, işareti göreceksiniz hatta ters dönüşümle yeniden giriş işaretini elde edebilirsiniz.

yani nyquist kare dalgayı 2f ile örnekleyin örneklediğiniz noktaları cetvelle birleştirin aha size yine kare dalga oldu demiyor. ama bizim yeniden kare dalgayı cetvelle birleştirerek elde etme gibi bir düşüncemiz varsa, genelde 10f den fazla bir örnekleme frekansı tavsiye edilir....



https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

Kaanx

Alıntı yapılan: berat23 - 23 Eylül 2013, 18:00:06
aldığın sample'lar aslında time domaininde oluyor. ft yaparsan frekans domainine geçersin.

fft ya da stft(aslında yapacağın)  almak istersen buffer'da tutacaksın ama bu konu şimdilik senin açından birşey ifade etmiyor.

Hocam atıyorum şuan ben kısaca bunu--> http://tr.wikipedia.org/wiki/Ses_sinyali okudgumda insan sesinin frekansını görebiliyorum. atıyorum elimde 150 hz lik bir bir ses dalgam var bunu  2.2*150 hz = 310 hz de örnekledim Fö= 310 hz dedik
ben burada 12 bitlik bir adc var bende 12*310 hz = 3720 bps yapıyor dimi hocam buraya kadar dogru muyum ? :) Burdan sonra şunları ögrenıyorum kı saniye 310 tane örnek alıcam  ve 12 bitlik adc oldugu içinde SNR=6.02*n --> 6.02*12=72,24 dB bir gürültüm olucak dogru mudur hocam ?. şimdi ben bu elimdeki verileri nasıl kullanıcam ? bunlar bana ne sağlayacak