Räkna ut frekvens i Excel
Räkna ut frekvens i Excel
Jag har samplat en ”sinus” och vill veta hur frekvensen varierar över tid.
Jag tänker mig att man skulle kunna göra en sinus anpassning, hitta nollgenomgångarna och mäta tiden mellan.
Problemet är att jag inte har en aning om hur jag ska lösa det. Går det ens att lösa i Excel?
Skickar med lite data att jobba med.
En fullständig fil har 700000 samplingar och jag har en hel bunt att gå igenom.
Jag tänker mig att man skulle kunna göra en sinus anpassning, hitta nollgenomgångarna och mäta tiden mellan.
Problemet är att jag inte har en aning om hur jag ska lösa det. Går det ens att lösa i Excel?
Skickar med lite data att jobba med.
En fullständig fil har 700000 samplingar och jag har en hel bunt att gå igenom.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Räkna ut frekvens i Excel
En lösning skulle kunna vara att titta närmare på fft.
PS. Jag såg ingen tid i excel filen, men jag antar att den är känd.
PS. Jag såg ingen tid i excel filen, men jag antar att den är känd.
Re: Räkna ut frekvens i Excel
Vill du mäta något i realtid? Eller få frekvensen per fil, eller en frekvensen för ett svepande fönster?
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: Räkna ut frekvens i Excel
Vad är det du vill göra?
Det finns ju flera sätt att göra det men jag tror inte ett kalkylprogram är rätt lösning. De brukar fungera rätt dåligt för tekniska tillämpningar. Sväljer Excel 700000 sample?
Varierar frekvensen inom en fil? Om inte så är enklaste lösningen en FFT. Om den varierar måste du segmentera data, kanske med överlapp och göra en FFT för varje segment.
Om det är en SINUS och inte en "sinus" funkar det nog bra att räkna nollgenomgångar och kompensera för sista ofullständiga cykeln eftersom du vet kurvformen.
Om du samplar med en MYCKET högre frekvens än signalens högsta frekvens spelar inte kurvformen så stor roll eftersom du har många nollgenomgångar.
Om kraven på noggrannhet är låga så klarar du dig förmodligen med relativt låg samplingsfrekvens.
Mer info?
Det finns ju flera sätt att göra det men jag tror inte ett kalkylprogram är rätt lösning. De brukar fungera rätt dåligt för tekniska tillämpningar. Sväljer Excel 700000 sample?
Varierar frekvensen inom en fil? Om inte så är enklaste lösningen en FFT. Om den varierar måste du segmentera data, kanske med överlapp och göra en FFT för varje segment.
Om det är en SINUS och inte en "sinus" funkar det nog bra att räkna nollgenomgångar och kompensera för sista ofullständiga cykeln eftersom du vet kurvformen.
Om du samplar med en MYCKET högre frekvens än signalens högsta frekvens spelar inte kurvformen så stor roll eftersom du har många nollgenomgångar.
Om kraven på noggrannhet är låga så klarar du dig förmodligen med relativt låg samplingsfrekvens.
Mer info?
Re: Räkna ut frekvens i Excel
Jag tror att en "flytande" FFT (ett fönster över en viss tid alltså) är den lösning som är enklast att genomföra, därmed inte sagt att den är direkt trivial.
Problemet här är ju frågeställningen, "Hur frekvensen varierar över tiden". Över vilken tid? Är det skillnaden mellan två efterföljande halvperioder som söks? Eller är det hur en signal runt 100 kHz varierar under 5 minuter?
Om man nu försöker ställa lite följdfrågor här:
Vad räknar du som "frekvensen"? Är det 1/tiden mellan två stigande nollgenomgångar? Eller är det antalet helperioder under en viss tidsperiod? Och i såna fall hur stor tidsperiod?
Inom vilket intervall ligger frekvensen? Hur fort kan den variera? Med vilken upplösning vill du kunna se variationerna?
Problemet här är ju frågeställningen, "Hur frekvensen varierar över tiden". Över vilken tid? Är det skillnaden mellan två efterföljande halvperioder som söks? Eller är det hur en signal runt 100 kHz varierar under 5 minuter?
Om man nu försöker ställa lite följdfrågor här:
Vad räknar du som "frekvensen"? Är det 1/tiden mellan två stigande nollgenomgångar? Eller är det antalet helperioder under en viss tidsperiod? Och i såna fall hur stor tidsperiod?
Inom vilket intervall ligger frekvensen? Hur fort kan den variera? Med vilken upplösning vill du kunna se variationerna?
Re: Räkna ut frekvens i Excel
FFT finns inbyggt i Excel och antalet rader i x64 Excel är begränsat av din dators minne.lillahuset skrev:Vad är det du vill göra?
Det finns ju flera sätt att göra det men jag tror inte ett kalkylprogram är rätt lösning. De brukar fungera rätt dåligt för tekniska tillämpningar. Sväljer Excel 700000 sample?
Varierar frekvensen inom en fil? Om inte så är enklaste lösningen en FFT. Om den varierar måste du segmentera data, kanske med överlapp och göra en FFT för varje segment.
Om det är en SINUS och inte en "sinus" funkar det nog bra att räkna nollgenomgångar och kompensera för sista ofullständiga cykeln eftersom du vet kurvformen.
Om du samplar med en MYCKET högre frekvens än signalens högsta frekvens spelar inte kurvformen så stor roll eftersom du har många nollgenomgångar.
Om kraven på noggrannhet är låga så klarar du dig förmodligen med relativt låg samplingsfrekvens.
Mer info?
Exempel:
http://www.kpap.net/notes/item.php?id=FFTExcel
Det behövs som sagt lite mer info (tidsstämplar/samplingsintervall) än enbart de uppmätta värdena men det går bra med Excel och är inte särskilt svårt.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: Räkna ut frekvens i Excel
Jag hade en gång en chef som använde Excel till "allt". Har också haft en kund där Power point användes till nästan allt. En hantverkare jag anlitade använde hammaren till det mesta inklusive kapa brädor där det inte spelade någon roll hur det såg ut.
Med det sagt tror jag inte Excel är särskilt lämpligt till FFTer om man har datafiler med 700000 punkter. Visst, det går säkert men kan nog vara ganska plågsamt.
Med det sagt tror jag inte Excel är särskilt lämpligt till FFTer om man har datafiler med 700000 punkter. Visst, det går säkert men kan nog vara ganska plågsamt.

-
- Inlägg: 16123
- Blev medlem: 21 juni 2003, 21:26:56
- Ort: Väster om Lund (0,67 mSv)
Re: Räkna ut frekvens i Excel
Awesome. Har funderat på detta till en applikation för produktinsstöd, men då hade det involverat Matlab för dataanalysenswesysmgr skrev:FFT finns inbyggt i Excel och antalet rader i x64 Excel är begränsat av din dators minne.lillahuset skrev:Vad är det du vill göra?
Det finns ju flera sätt att göra det men jag tror inte ett kalkylprogram är rätt lösning. De brukar fungera rätt dåligt för tekniska tillämpningar. Sväljer Excel 700000 sample?
Varierar frekvensen inom en fil? Om inte så är enklaste lösningen en FFT. Om den varierar måste du segmentera data, kanske med överlapp och göra en FFT för varje segment.
Om det är en SINUS och inte en "sinus" funkar det nog bra att räkna nollgenomgångar och kompensera för sista ofullständiga cykeln eftersom du vet kurvformen.
Om du samplar med en MYCKET högre frekvens än signalens högsta frekvens spelar inte kurvformen så stor roll eftersom du har många nollgenomgångar.
Om kraven på noggrannhet är låga så klarar du dig förmodligen med relativt låg samplingsfrekvens.
Mer info?
Exempel:
http://www.kpap.net/notes/item.php?id=FFTExcel
Det behövs som sagt lite mer info (tidsstämplar/samplingsintervall) än enbart de uppmätta värdena men det går bra med Excel och är inte särskilt svårt.
-
- Inlägg: 16123
- Blev medlem: 21 juni 2003, 21:26:56
- Ort: Väster om Lund (0,67 mSv)
Re: Räkna ut frekvens i Excel
Du underskattar modrna datorers beräkningskapacitet. Och överskattar Matlabs exekveringshastighet.lillahuset skrev:Jag hade en gång en chef som använde Excel till "allt". Har också haft en kund där Power point användes till nästan allt. En hantverkare jag anlitade använde hammaren till det mesta inklusive kapa brädor där det inte spelade någon roll hur det såg ut.
Med det sagt tror jag inte Excel är särskilt lämpligt till FFTer om man har datafiler med 700000 punkter. Visst, det går säkert men kan nog vara ganska plågsamt.
Överlag är inte 700 ksmpls FFT kul på något system utom dedikerade signalanalyssystem
Excel är bra till mycket utom datavisualisering. Där suger det elefantk-k.
Re: Räkna ut frekvens i Excel
Excel är användbart till allt möjligt.
http://hackaday.com/2014/10/24/using-ex ... s-at-work/
On topic kan jag inte säga så mycket, men antagligen blir det bra med nån form glidande fönster (med lämplig mjuk fönsterfunktion nånstans mellan boxcar och Blackman-Harris) och FFT, eller kanske DFT om det rör sig om nåt begränsat frekvensintervall.

On topic kan jag inte säga så mycket, men antagligen blir det bra med nån form glidande fönster (med lämplig mjuk fönsterfunktion nånstans mellan boxcar och Blackman-Harris) och FFT, eller kanske DFT om det rör sig om nåt begränsat frekvensintervall.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: Räkna ut frekvens i Excel
rikkitikkitavi: C är väl ett trevligt språk.
Men det är klart, det hjälper ju om man har en hyfsad verktygslåda. Står man på ruta ett kan det vara lite tungt.

Re: Räkna ut frekvens i Excel
FFT har också sina begränsningar - tex. hur stor är frekvensvariationen - "frekvenupplösningen" är 1/antal sampel i FFT-upplösningen och blir inte så bra om man baserar det på fönster med 64 sampel och kör man på 65536 sampel så blir peaken suddig och utsmetad om frekvensen varierar under sampel-fönstret, blir också utsmetad om frekvensen inte går jämt upp med antal sampel i fönstret och man får två spetsar med lägre amplitud istället för en med högre amplitud samt 'kjolar' med 'falsk' signalenergi på frekvenser runt omkring de högsta spetsarna om inte samplen i början och slutet av sampelfönstret ligger precis på 0 ( värde skilt från noll ger en dirac-puls som smetar ut sig på samtliga frekvenskomponenter i FFT-fönstret) och det är därför man provar med olika fönsterfunktioner för att undertrycka dessa med förstås olika påverkan (Hamming, Hanning raised cosinus etc.) och beroende på vad man vill visa.
Där kanske man skall snarare simulera olika detektionsmetoder och tex. mixa (multiplicera) inkommande signal med en referens-sinus i mitten av frekvensområdet av det tänkta sinusfrekvensen och på utgången ser man då skillnadsfrekvensen mellan inkommande signal och referens-sinus (kort sagt en enkel radiomottagare) och frekvensen är 0 om inkommande frekvensen och referensoscillatorn är precis lika, men har en 'beat-ton' om det avviker det minsta lilla - nackdelen är dock att man inte kan avgöra om inkommande frekvens ligger över eller under referensfrekvensen - bara att det skiljer.
Kör man med 0/90 graders fasskillnad referens oscillator och två parallella multiplikationer av inkommande signal så får man ut en vektor som vandrar plus eller minus antal grader gentemot referensfrekvensen beroende på frekvens-avvikelsen och här kan man nu avgöra om frekvensen är lägre eller högre än referensoscillatorn beroende på vinkeländringen är positiv eller negativ mellan varje sampling och det fina är att man ser tendensen på varje sampel och inte bara vid mätning på nollgenomgångarna.
Själv skulle jag nog hacka detta i C/C++/python etc. och som stöder komplexa tal som datatyper då värdet från de två multiplikatorerna kan stoppas in som komplex tal och sedan kan presenteras som en punkt med x och y värde (kartetisk presentation och plottas ut i tex. konstellationsdiagram ) eller som vektor i form av belopp och vinkel och sedan jämför man varje sampel mellan föregående och nästa tex. om det går plus eller minus ett antal grader mellan varje sampel.
till detta får man vara beredd på att stoppa in olika filter om signalen är mycket störd eller brusig och detta är också en hel värld att studera och välja ut rätt filter då dessa också påverkar signalen både fas och amplitudmässigt.
Där kanske man skall snarare simulera olika detektionsmetoder och tex. mixa (multiplicera) inkommande signal med en referens-sinus i mitten av frekvensområdet av det tänkta sinusfrekvensen och på utgången ser man då skillnadsfrekvensen mellan inkommande signal och referens-sinus (kort sagt en enkel radiomottagare) och frekvensen är 0 om inkommande frekvensen och referensoscillatorn är precis lika, men har en 'beat-ton' om det avviker det minsta lilla - nackdelen är dock att man inte kan avgöra om inkommande frekvens ligger över eller under referensfrekvensen - bara att det skiljer.
Kör man med 0/90 graders fasskillnad referens oscillator och två parallella multiplikationer av inkommande signal så får man ut en vektor som vandrar plus eller minus antal grader gentemot referensfrekvensen beroende på frekvens-avvikelsen och här kan man nu avgöra om frekvensen är lägre eller högre än referensoscillatorn beroende på vinkeländringen är positiv eller negativ mellan varje sampling och det fina är att man ser tendensen på varje sampel och inte bara vid mätning på nollgenomgångarna.
Själv skulle jag nog hacka detta i C/C++/python etc. och som stöder komplexa tal som datatyper då värdet från de två multiplikatorerna kan stoppas in som komplex tal och sedan kan presenteras som en punkt med x och y värde (kartetisk presentation och plottas ut i tex. konstellationsdiagram ) eller som vektor i form av belopp och vinkel och sedan jämför man varje sampel mellan föregående och nästa tex. om det går plus eller minus ett antal grader mellan varje sampel.
till detta får man vara beredd på att stoppa in olika filter om signalen är mycket störd eller brusig och detta är också en hel värld att studera och välja ut rätt filter då dessa också påverkar signalen både fas och amplitudmässigt.
Senast redigerad av xxargs 20 augusti 2016, 14:25:17, redigerad totalt 1 gång.
Re: Räkna ut frekvens i Excel
Samplingshastighet: 200kSPS kan tyvärr inte sampla fortare.
Frekvensen varierar antagligen +/-50%
Behöver inte vara i realtid.
Jag vill mäta frekvensen för varje period och göra en graf med frekvens på y-axeln och tid på x-axeln. Att dela upp kurvan i små avsnitt/fönster skulle också kunna fungera.
Totala tiden är 700000 sample / 200000 sample per sekund = 3,5 sekunder.
FFT på segment skulle kunna vara ett alternativ.
"sinus" skrev jag för att frekvensen varierar något, alla nollgenomgångar är med.
Tycker Excel hanterar 700000 sample helt OK.
Kan inte Matlab och har ingen lust att köpa en licens.
Frekvensen varierar antagligen +/-50%
Behöver inte vara i realtid.
Jag vill mäta frekvensen för varje period och göra en graf med frekvens på y-axeln och tid på x-axeln. Att dela upp kurvan i små avsnitt/fönster skulle också kunna fungera.
Totala tiden är 700000 sample / 200000 sample per sekund = 3,5 sekunder.
FFT på segment skulle kunna vara ett alternativ.
"sinus" skrev jag för att frekvensen varierar något, alla nollgenomgångar är med.
Tycker Excel hanterar 700000 sample helt OK.
Kan inte Matlab och har ingen lust att köpa en licens.
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: Räkna ut frekvens i Excel
Och frekvensen är ungefär? Är signalen en SINUS eller en "sinus"?
Re: Räkna ut frekvens i Excel
Lillahuset: du behöver inte vara rädd för att öppna filen jag bifogade, den innehåller bara på 1000 punkter. ca 15 kHz.
Såhär ser 100 punkter ut i ett Exceldiagram. Men är det en riktig sinus?
Enligt många är det nog en sinus, enligt matematiknördar är det inte en sinus.
Såhär ser 100 punkter ut i ett Exceldiagram. Men är det en riktig sinus?

Enligt många är det nog en sinus, enligt matematiknördar är det inte en sinus.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.