Matlab glidande medelvärde signalbehandlings


Med hjälp av MATLAB, hur kan jag hitta 3-dagars glidande medelvärde för en viss kolumn i en matris och lägga till det glidande medlet till den matrisen jag försöker beräkna det 3-dagars glidande medlet från botten till toppen av matrisen. Jag har angivit min kod: Med tanke på följande matris a och mask: Jag har försökt implementera kommandot conv men jag får ett fel. Här är conv kommandot jag har försökt använda på 2: a kolumnen av matris a: Utgången jag önskar ges i följande matris: Om du har några förslag, skulle jag verkligen uppskatta det. Tack För kolumn 2 i matris a, beräknar jag 3-dagars glidande medelvärde enligt följande och placerar resultatet i kolumn 4 i matris a (jag byttes matris a som 39desiredOutput39 bara för illustration). 3-dagarsgenomsnittet 17, 14, 11 är 14 3-dagarsgenomsnittet 14, 11, 8 är 11 3-dagarsgenomsnittet 11, 8, 5 är 8 och 3-dagarsgenomsnittet 8, 5, 2 är 5. Det finns inget värde i botten 2 rader för den 4: e kolumnen eftersom beräkningen för 3-dagars glidande medel börjar längst ner. Den 39valid39-utgåvan visas inte förrän minst 17, 14 och 11. Förhoppningsvis är det här meningsfullt Aaron Jun 12 13 at 1:28 Generellt skulle det hjälpa om du skulle visa felet. I det här fallet gör du två saker fel: Först måste din konvolver delas av tre (eller längden på det glidande medlet) För det andra märker du storleken på c. Du kan inte bara passa c till en. Det typiska sättet att få ett glidande medelvärde skulle vara att använda samma: men det ser inte ut som du vill ha. Istället är du tvungen att använda ett par rader: Jag behöver beräkna ett glidande medelvärde över en dataserie, inom en för loop. Jag måste få det glidande genomsnittet över N9 dagar. Array Im computing in är 4 serier av 365 värden (M), som i sig är medelvärden för en annan uppsättning data. Jag vill räkna ut medelvärdena för mina data med glidande medelvärde i en plot. Jag googled lite om glidande medelvärden och conv kommandot och hittade något som jag försökte implementera i min kod .: Så i princip beräknar jag mitt medelvärde och plottar det med ett (fel) glidande medelvärde. Jag valde wts-värdet direkt utanför mathworks webbplats, så det är felaktigt. (källa: mathworks. nlhelpeconmoving-average-trend-estimation. html) Mitt problem är dock att jag inte förstår vad det här är. Kan någon förklara om det har något att göra med värdena på värdena: det är ogiltigt i det här fallet. Alla värden är viktade samma. Och om jag gör det här helt fel, kan jag få lite hjälp med det mitt uppriktiga tack. frågade 23 sep 14 kl 19:05 Använda conv är ett utmärkt sätt att genomföra ett glidande medelvärde. I koden du använder är wts hur mycket du väger varje värde (som du gissade). Summan av den vektorn ska alltid vara lika med en. Om du vill vikta varje värde jämnt och göra ett N-rörligt filter så vill du göra Att använda det giltiga argumentet i conv resulterar i att få färre värden i Ms än du har i M. Använd samma om du inte har något emot effekterna av noll padding. Om du har signalbehandlingsverktygslådan kan du använda cconv om du vill prova ett cirkulärt glidande medelvärde. Något som Du borde läsa conv and cconv dokumentationen för mer information om du inte redan har. Du kan använda filter för att hitta ett löpande medelvärde utan att använda en för loop. I det här exemplet hittar du löpande medelvärdet för en vektor med 16 element, med en fönsterstorlek på 5. 2) Slät som en del av kurvanpassningsverktygslådan (som är tillgänglig i de flesta fall) yy släpper (y) data i kolumnvektorn y med ett glidande medelfilter. Resultat returneras i kolumnvektorn yy. Standardvärdet för det glidande medlet är 5. I många experiment i vetenskap förändras de sanna signalamplituderna (y-axelvärdena) ganska smidigt som en funktion av x-axelvärdena, medan många typer av brus ses som snabba, slumpmässiga ändringar i amplitud från punkt till punkt inom signalen. I den senare situationen kan det vara användbart att försöka minska bullret genom en process som kallas utjämning. Vid utjämning ändras datapunkterna för en signal så att individuella punkter som är högre än de omedelbart intilliggande punkterna (förmodligen på grund av brus) reduceras och punkter som är lägre än de intilliggande punkterna ökas. Detta leder naturligtvis till en mjukare signal (och ett långsammare stegsvar vid signalförändringar). Så länge den sanna underliggande signalen faktiskt är mjuk, blir den sanna signalen inte mycket snedvridd genom utjämning, men högfrekvent brus kommer att minskas. När det gäller frekvenskomponenterna hos en signal fungerar en utjämningsoperation som ett lågpassfilter. reducera högfrekventa komponenter och passera lågfrekventa komponenter med liten förändring. Utjämningsalgoritmer. De flesta utjämningsalgoritmer är baserade på skift - och multipliceringsmetoden, där en grupp av intilliggande punkter i de ursprungliga data multipliceras punkt för punkt med en uppsättning tal (koefficienter) som definierar den släta formen, produkterna läggs upp och dividerat med summan av koefficienterna, som blir en punkt av jämndat data, skiftas uppsättningen av koefficienter en punkt nedom de ursprungliga data och processen upprepas. Den enklaste utjämningsalgoritmen är den rektangulära boxvagnen eller det obetydliga glidande medelglattet. Det ersätter helt enkelt varje punkt i signalen med medelvärdet av m intilliggande punkter, där m är ett positivt heltal som kallas den smidiga bredden. Till exempel, för en 3-punkts jämna (m 3): för j 2 till n-1, där S j j j pekar i den jämna signalen, Y j j den punkten i den ursprungliga signalen och n är den totala antal poäng i signalen. Liknande släta operationer kan konstrueras för önskad slät bredd, m. Vanligtvis är m ett udda nummer. Om bruset i data är vitt brus (det vill säga jämnt fördelat över alla frekvenser) och dess standardavvikelse är D. då kommer standardavvikelsen för det brus som återstår i signalen efter det första passet av en obestruket glidgods, att vara ungefär s över kvadratroten av m (D sqrt (m)), där m är den släta bredden. Trots sin enkelhet är detta smidigt faktiskt optimalt för det vanliga problemet med att reducera vitt brus samtidigt som det skarpaste stegsvaret hålls. Svaret på en stegförändring är faktiskt linjär. så det här filtret har fördelen av att reagera helt utan någon återstående effekt med sin responstid. vilket är lika med den släta bredden dividerad med samplingsfrekvensen. Den triangulära släta är som den rektangulära släta ovanför, förutom att den genomför en viktad utjämningsfunktion. För en 5-punkts slät (m 5): för j 3 till n-2 och på liknande sätt för andra jämna bredder (se kalkylbladet UnitGainSmooths. xls). I båda dessa fall är heltalet i nämnaren summan av koefficienterna i täljaren, vilket resulterar i en enhetstegning som inte har någon effekt på signalen där den är en rak linje och som bevarar området under toppar. Det är ofta användbart att applicera en utjämningsoperation mer än en gång, det vill säga att släta en redan jämn signal, för att bygga längre och mer komplicerade slätningar. Till exempel motsvarar den 5-punkts triangulära släta ovan två passager med en 3-punkts rektangulär slät. Tre pass av ett 3-punkts rektangulärt jämnt resultat i en 7-punkts pseudo-gaussisk eller höackack, för vilken koefficienterna är i förhållandet 1: 3: 6: 7: 6: 3: 1. Den generella regeln är att n-passager med en w-bredd ger en jämn resultat i en kombinerad jämn bredd av n w-n 1. Exempelvis resulterar 3 pass av en 17-punkts slät i en 49-punkts slät. Dessa multi-pass-smidningar är mer effektiva när det gäller att reducera högfrekventa ljud i signalen än en rektangulär slät, men uppvisar långsammare stegsvar. I alla dessa slätningar väljes bredden på den mjuka mn för att vara ett udda heltal så att de släta koefficienterna är symmetriskt balanserade runt centralpunkten, vilket är viktigt eftersom det bevarar x-axelpositionen av toppar och andra egenskaper i signal. (Detta är särskilt kritiskt för analytiska och spektroskopiska tillämpningar eftersom toppositionerna ofta är viktiga mätmål). Observera att vi antar här att signalens x-axelintervall är likformig, det vill säga att skillnaden mellan x-axelvärdena hos intilliggande punkter är densamma i hela signalen. Detta antas också i många av de andra signalbehandlingstekniker som beskrivs i denna uppsats, och det är en mycket vanlig (men inte nödvändig) egenskap hos signaler som förvärvas av automatiserad och datoriserad utrustning. Savitzky-Golay släta är baserad på minsta kvadrera montering av polynomier till segment av data. Algoritmen diskuteras i wire. tu-bs. deOLDWEBmameyercmrsavgol. pdf. Jämfört med glidgodsens smidighet är Savitzky-Golay slät mindre effektiv vid minskning av ljud, men effektivare för att behålla formen på den ursprungliga signalen. Det är kapabelt att differentiera såväl som utjämning. Algoritmen är mer komplex och beräkningstiderna är större än de smidiga typerna som diskuteras ovan, men med moderna datorer är skillnaden inte signifikant och kod på olika språk är allmänt tillgänglig online. Se SmoothingComparison. html. Formen av någon utjämningsalgoritm kan bestämmas genom att applicera den släta till en delta-funktion. en signal som består av alla nollor utom för en punkt, vilket demonstreras av det enkla MatlabOctave-skriptet DeltaTest. m. Brusreducering . Utjämning minskar vanligtvis bruset i en signal. Om bruset är vitt (det vill säga jämnt fördelat över alla frekvenser) och dess standardavvikelse är D. då kommer standardavvikelsen för bruset som återstår i signalen efter ett pass av en rektangulär slät att vara approximativt D kvadrat (m), där m är den släta bredden. Om en triangulär slät används istället blir bruset något mindre, ungefär D 0,8sqrt (m). Utjämningsoperationer kan appliceras mer än en gång: det vill säga en tidigare jämn signal kan slätas igen. I vissa fall kan detta vara användbart om det finns mycket högfrekventa ljud i signalen. Dock är brusreduceringen för vitt brus mindre i varje på varandra följande slät. Till exempel reducerar tre passager med en rektangulär slät vitstråle med en faktor på ungefär D 0,7sqrt (m), endast en liten förbättring över två passager. Frekvensfördelningen av ljud, betecknad med ljudfärg. påverkar kraftigt utjämningsförmågan för att minska bruset. MatlabOctave-funktionen NoiseColorTest. m jämför effekten av en 20-punkts boxbil (obesvikt glidande medelvärde) jämn på standardavvikelsen för vitt, rosa och blått brus, som alla har en ursprunglig ojämn standardavvikelse på 1,0. Eftersom utjämning är en lågpassfiltreringsprocess, påverkar det lågfrekventa (rosa och röda) ljud och påverkar högfrekventa (blå och violett) ljud mer än det vita bruset. Observera att beräkningen av standardavvikelsen är oberoende av dataens ordning och sålunda av sin frekvensdistributionssortering av en uppsättning data ändras inte dess standardavvikelse. Standardavvikelsen för en sinusvåg är oberoende av dess frekvens. Utjämning ändrar emellertid både frekvensfördelningen och standardavvikelsen för en datamängd. Slutverk och problem med borttappad poäng. I ekvationerna ovan definieras den 3-punkts rektangulära släta endast för j2 till n-1. Det finns inte tillräckligt med data i signalen för att definiera en komplett 3-punkts slät för den första punkten i signalen (j 1) eller för den sista punkten (j n). eftersom det inte finns några datapunkter före den första punkten eller efter sista punkten. (På samma sätt definieras en 5-punkts smidig endast för j 3 till n-2, och därför kan en smidig inte beräknas för de två första punkterna eller för de sista två punkterna). I allmänhet kommer en m-breddsläge att vara (m -1) 2 punkter vid signalets början och (m -1) 2 punkter vid slutet av signalen för vilken en fullständig m-breddsläge inte kan beräknas på vanligt sätt. Vad man ska göra Det finns två tillvägagångssätt. En är att acceptera förlusten av poäng och trimma bort dessa punkter eller ersätta dem med nollor i den släta signalen. (Det är den metod som tas i de flesta siffrorna i detta dokument). Det andra tillvägagångssättet är att använda progressivt mindre jämnheter vid signalens ändar, till exempel för att använda 2, 3, 5, 7-punktsjämna för signalpunkterna 1, 2, 3 och 4. För punkterna n, n-1 , n-2, n-3. respektive. Det senare tillvägagångssättet kan vara att föredra om signalets kanter innehåller kritisk information, men det ökar körtiden. Den snabbsmooth-funktion som diskuteras nedan kan använda någon av dessa två metoder. Exempel på utjämning. Ett enkelt exempel på utjämning visas i Figur 4. Den vänstra halvan av denna signal är en högljudd topp. Den högra halvan är samma topp efter att ha genomgått en triangulär utjämningsalgoritm. Bullret är kraftigt minskat medan toppen själv knappast ändras. Det reducerade bruset gör att signalegenskaperna (toppläge, höjd, bredd, yta etc.) kan mätas mer noggrant genom visuell inspektion. Figur 4. Den vänstra halvan av denna signal är en högljudd topp. Den högra halvan är samma topp efter att ha genomgått en utjämningsalgoritm. Bullret reduceras kraftigt medan toppunkten knappast ändras, vilket gör det enklare att mäta toppositionen, höjden och bredden direkt genom grafisk eller visuell uppskattning (men det förbättrar inte mätningar gjorda med minsta kvadratmetoder se nedan). Ju större den släta bredden desto större bullerreduktion men desto större är risken för att signalen förvrängs av utjämningsoperationen. Det optimala valet av jämn bredd beror på bredden och formen på signalen och digitaliseringsintervallet. För topptypsignaler är den kritiska faktorn det släta förhållandet. förhållandet mellan den släta bredden m och antalet punkter i toppens halvbredd. I allmänhet förbättrar utjämningsförhållandet signal-brusförhållandet men orsakar en minskning av amplituden och ökningen av toppens bandbredd. Observera att den släta bredden kan uttryckas på två olika sätt: (a) som antalet datapunkter eller (b) som x-axelintervallet (för spektroskopiska data vanligtvis i nm eller i frekvensenheter). De två är helt enkelt relaterade: antalet datapunkter är helt enkelt intervallet x-axel gånger ökningen mellan intilliggande x-axelvärden. Det släta förhållandet är detsamma i båda fallen. Figurerna ovan visar exempel på effekten av tre olika släta bredder på bullriga Gauss-formade toppar. I figuren till vänster har toppen en (sann) höjd av 2,0 och det finns 80 poäng i halvbredden på toppen. Den röda linjen är den ursprungliga ojämna toppen. De tre överlagda gröna linjerna är resultatet av att utjämna denna topp med en triangulär jämn bredd (från topp till botten) 7, 25 och 51 poäng. Eftersom toppbredden är 80 poäng, är de smidiga förhållandena för dessa tre jämnheter 780 0,09, 2580 0,31 respektive 5180 0,64. När den smidiga bredden ökar minskar bruset gradvis men topphöjden minskar också något. För den största släta ökar toppbredden något. I figuren till höger har den ursprungliga toppen (i rött) en sann höjd på 1,0 och en halv bredd på 33 poäng. (Det är också mindre bullrigt än exemplet till vänster.) De tre överlagrade gröna linjerna är resultatet av samma tre triangulära slätningar av bredd (från topp till botten) 7, 25 och 51 poäng. Men eftersom toppbredd i detta fall bara är 33 poäng är de smidiga förhållandena för dessa tre slätningar större - 0,21, 0,76 respektive 1,55. Du kan se att toppdistorsionseffekten (minskning av topphöjd och ökning i toppbredd) är större för den smalare toppen eftersom de smidiga förhållandena är högre. Smidiga förhållanden större än 1,0 används sällan på grund av överdriven toppförvrängning. Observera att även i värsta fall inte topplägena uppnås (förutsatt att de ursprungliga topparna var symmetriska och inte överlappade av andra toppar). Om du behåller toppens form är viktigare än att optimera signal-brusförhållandet, har Savitzky-Golay fördelen över glidgods. I samtliga fall förblir det totala arealet under toppen oförändrat. Om toppbredderna varierar väsentligt, en adaptiv slät. som tillåter den smidiga bredden att variera över signalen, kan användas. Problemet med utjämning är att det ofta är mindre fördelaktigt än du kanske tror. Det är viktigt att påpeka att utjämningsresultat som illustreras i figuren ovan kan vara bedrägligt imponerande eftersom de använder ett enda prov av en högljudd signal som mjukas i olika grader. Detta medför att betraktaren underskattar bidraget från lågfrekventa brus, vilket är svårt att uppskatta visuellt eftersom det finns så få lågfrekventa cykler i signalrekordet. Detta problem kan visualiseras genom att spela in ett antal oberoende prover av en högljudd signal bestående av en enkel topp, som illustreras i de två figurerna nedan. Dessa siffror visar tio överlagda tomter med samma topp men med självständigt vitt brus, varje plottat med en annan linjefärg, osmoothed till vänster och jämnas till höger. Inspektion av de släta signalerna till höger visar tydligt variationen i toppläge, höjd och bredd mellan de 10 proverna som orsakas av det lågfrekventa bruset kvar i de släta signalerna. Utan ljudet skulle varje topp ha en topphöjd på 2, toppcentret vid 500 och en bredd på 150. Bara för att en signal ser mjuk ut betyder det inte att det finns något ljud. Lågfrekventa brus kvar i signalerna efter utjämning kommer fortfarande att störa precist mätning av topposition, höjd och bredd. (Den generering av skript under varje figur kräver att funktionerna Gaussian. m, whitenoise. m och fastsmooth. m laddas ner från Tinyurlcey8rwh.) Det bör vara klart att utjämning sällan helt kan eliminera brus, eftersom det flesta ljudet sprider sig över ett brett frekvensomfång och utjämning minskar bara bullret i en del av sitt frekvensområde. Endast för vissa mycket specifika typer av brus (t. ex. diskret frekvensbrus eller enpunktspinnar) finns det hopp om någonting nära fullständig bruseliminering. Figuren till höger nedan är en annan exempelsignal som illustrerar några av dessa principer. Signalen består av två gaussiska toppar, en lokaliserad vid x50 och den andra vid x150. Båda toppar har en topphöjd på 1,0 och en topphalvbredd på 10 och ett normalt distribuerat slumpmässigt vitt brus med en standardavvikelse på 0,1 har lagts till hela signalen. X-axelprovtagningsintervallet är emellertid annorlunda för de två toppar sin 0,1 för den första toppen (från x0 till 100) och 1,0 för den andra toppen (från x100 till 200). Det innebär att den första toppen karakteriseras av tio gånger fler poäng än den andra toppen. Det kan verka som att den första toppen är bullrigare än den andra, men det är bara en illusion. Signalförhållandet för båda toppar är 10. Den andra toppen ser mindre bullriga bara för att det finns färre ljudprover där och vi tenderar att underskatta dispersionen av småprover. Resultatet av detta är att när signalen släpas, är den andra toppen mycket mer sannolikt att den snedvrids av det släta (det blir kortare och bredare) än den första toppen. Den första toppen kan tolerera en mycket bredare jämn bredd, vilket resulterar i en större grad av brusreducering. (På samma sätt, om båda toppar mäts med minsta kvadratkurvanpassningsmetoden är passformen för den första toppen stabilare med bruset och de uppmätta parametrarna för den toppen kommer att vara ungefär 3 gånger mer exakta än den andra toppen eftersom det finns är 10 gånger mer datapunkter i den toppen, och mätmåttets precision förbättras ungefär med kvadratroten på antalet datapunkter om bruset är vitt). Du kan ladda ner datafilen utx i TXT-format eller i Matlab MAT-format. Optimering av utjämning. När jämn bredd ökar ökar utjämningsförhållandet, bruset minskar snabbt först, då långsammare, och topphöjden reduceras också, långsamt först, sedan snabbare. Bullerreduktionen beror på den släta bredden, den släta typen (t ex rektangulär, triangulär osv.) Och ljudfärgen, men topphöjdsminskningen beror också på toppbredd. Resultatet är att signal-brusen (definierad som förhållandet mellan topphöjden av brusets standardavvikelse) ökar snabbt först och når sedan ett maximum. Detta illustreras i animationen till vänster för en Gaussisk topp med vitt brus (producerat av detta MatlabOctave-skript). Den maximala förbättringen i signal-brusförhållandet beror på antalet punkter i toppen: ju fler punkter i toppen, desto större släta bredder kan användas och desto större bullerreduktion. Denna figur illustrerar också att det mesta av brusreduceringen beror på högfrekventa komponenter i bruset, medan mycket av lågfrekvent brus kvarstår i signalen, även när det slätas. Vilket är det bästa släta förhållandet Det beror på syftet med toppmätningen. Om det ultimata målet med mätningen är att mäta topphöjd eller bredd, ska smidiga förhållanden under 0,2 användas och Savitzky-Golay-slätan är föredragen. Men om målsättningen med mätarna t är att mäta toppläget (x-axelvärdet av toppen) kan större glatta förhållanden användas om så önskas, eftersom utjämning har liten effekt på toppläget (såvida inte toppen är asymmetrisk eller ökningen i toppbredd är så mycket att det medför att närliggande toppar överlappar varandra). Om toppen faktiskt bildas av två underliggande toppar som överlappar så mycket att de verkar vara en topp, är kurvanpassning det enda sättet att mäta parametrarna för de underliggande topparna. Tyvärr motsvarar det optimala signal-brusförhållandet ett jämnt förhållande som väsentligt snedvrider toppen, varför kurvanpassning av de osmälta data ofta föredras. I kvantitativa kemiska analysapplikationer baserade på kalibrering med standardprover är den höghöjdsminskning som orsakas av utjämning inte så viktig. Om samma signalbehandlingsoperationer tillämpas på proverna och till standarderna, kommer topphöjdsreduktionen av standardsignalerna att vara exakt densamma som för provsignalerna och effekten avbryter exakt. I sådana fall kan smidiga bredder från 0,5 till 1,0 användas om det behövs för att ytterligare förbättra signal-brusförhållandet, vilket visas i figuren till vänster (för en enkel glidande medelrektangulär släthet). I praktisk analytisk kemi behövs sällan absoluta topphöjdmätningar. Kalibrering mot standardlösningar är regeln. (Kom ihåg att målet med kvantitativ analys inte är att mäta en signal utan snarare att mäta koncentrationen av det okända.) Det är emellertid väldigt viktigt att tillämpa exakt samma signalbehandlingssteg till standardsignalerna som till samplesignalerna, annars kan ett stort systematiskt fel uppstå. För en mer detaljerad jämförelse av alla fyra utjämningstyper som beskrivs ovan, se SmoothingComparison. html. (a) av kosmetiska skäl, förbereda en snyggare eller mer dramatisk bild av en signal för visuell inspektion eller publikationer, särskilt för att betona långsiktigt beteende på kort sikt. eller (b) om signalen därefter analyseras med ett förfarande som skulle nedbrytas genom närvaron av för högt högfrekvent brus i signalen, exempelvis om topparnas höjder ska bestämmas visuellt eller grafiskt eller genom att använda MAX-funktionen, av bredden av topparna mäts av halvbreddsfunktionen, eller om läget av maxima, minima eller böjpunkter i signalen bestäms automatiskt genom detektering av nollkorsningar i derivat av signalen. Optimering av mängden och typen av utjämning är viktig i dessa fall (se Differentiation. htmlSmothing). Men i allmänhet, om en dator är tillgänglig för att göra kvantitativa mätningar, är det bättre att använda minsta kvadreringsmetoder på de ojämna data, i stället för grafiska uppskattningar av jämn data. Om ett kommersiellt instrument har möjlighet att släta ut data för dig, är det bäst att inaktivera utjämningen och spela in och spara ojämna data, du kan alltid släta det själv senare för visuell presentation och det är bättre att använda de osmoothed data för minst - squares montering eller annan behandling som du kanske vill göra senare. Utjämning kan användas för att lokalisera toppar men det ska inte användas för att mäta toppar. Vård måste användas vid utformning av algoritmer som utnyttjar utjämning. Till exempel i en populär teknik för toppfynd och mätning. toppar lokaliseras genom att detektera nedåtriktade nollkorsningar i det slätade första derivatet. men positionen, höjden och bredden av varje topp bestäms av minsta kvadratkurvanpassning av ett segment av ursprungliga osmälta data i närheten av nollkorsningen. På så sätt, även om kraftig utjämning är nödvändig för att åstadkomma tillförlitlig diskriminering av bullertoppar, förvrängs toppparametrarna som extraheras genom kurvanpassning inte genom utjämningen. (a) utjämning kommer inte avsevärt att förbättra noggrannheten hos parametermätningen med minsta kvadratmätningar mellan separata oberoende signalprover, (b) alla utjämningsalgoritmer är åtminstone något förlustiga, vilket medför åtminstone viss förändring i signalform och amplitud, (c) det är svårare att utvärdera passformen genom att inspektera resterna om dataen slätas, eftersom det smutsiga bruset kan misstas för en verklig signal. och (d) utjämning av signalen undervärderar allvarligt parameterns fel som förutses av utbredning av felberäkningar och bootstrap-metoden. Hantera spikar och outliers. Ibland är signalerna kontaminerade med mycket långa, smala spikar eller utjämnare som förekommer i slumpmässiga intervaller och med slumpmässiga amplitud, men med bredder på endast en eller några punkter. Det ser inte bara grimt ut, men det gör också antagandena om minsta kvadrater beräkningar eftersom det inte är normalt distribuerat slumpmässigt brus. Denna typ av störning är svår att eliminera med användning av ovanstående utjämningsmetoder utan att förvränga signalen. Ett medianfilter, som ersätter varje punkt i signalen med medianen (i stället för medelvärdet) av m intilliggande punkter, kan emellertid helt eliminera smala spikar med liten förändring i signalen om spetsens bredd bara är en eller en få poäng och lika med eller mindre än m. Se en. wikipedia. orgwikiMedianfilter. Funktionen killspikes. m använder ett annat tillvägagångssätt som den lokaliserar och eliminerar spikarna med patchar över dem med linjär interpolering från signalen före och efter. Till skillnad från konventionella smidningar kan dessa funktioner användas lönsamt före minsta kvadratiska fittingfunktioner. (Å andra sidan, om dess spikar som faktiskt är signalen av intresse och andra komponenter i signalen stör varandra, se CaseStudies. htmlG). Ett alternativ till utjämning för att minska bruset i uppsättningen av tio ojämna signaler som används ovan är ensemble-medelvärdet. vilket kan utföras i det här fallet helt enkelt genom MatlabOctave-koden plot (x, medelvärde (y)) visar resultatet en minskning av vitt brus med cirka sqrt (10) 3.2. Detta räcker för att döma att det finns en enda topp med gaussisk form, som sedan kan mätas med kurvmontering (täckt i ett senare avsnitt) med hjälp av MatlabOctave-kodens toppfit (xmean (y), 0,0,1). med resultatet visar utmärkt överenskommelse med positionen (500), höjden (2) och bredden (150) av Gauss-toppen skapad i den tredje raden av genereringsskriptet (ovanför vänster). En stor fördel med ensemble-medelvärdet är att bruset vid alla frekvenser minskar. inte bara högfrekvent bruset som vid utjämning. Con densing oversampled signaler. Ibland registreras signaler tätare (det vill säga med mindre x-axelintervaller) än vad som verkligen behövs för att fånga upp alla viktiga egenskaper hos signalen. Detta resulterar i större än nödvändiga datamängder, vilket fördröjer signalbehandlingsprocedurer och kan skatta lagringskapaciteten. För att korrigera detta kan överförda signaler minskas i storlek, antingen genom att eliminera datapunkter (t ex släppa varje annan punkt eller varje tredje punkt) eller genom att ersätta grupper av intilliggande punkter med sina medelvärden. Den senare tillvägagångssättet har fördelen av att använda snarare än att bortföra borttagna datapunkter, och det fungerar som utjämning för att ge en viss grad av brusreducering. (Om bruset i den ursprungliga signalen är vit och signalen kondenseras genom att medelvärdet av varje n-punkt reduceras, sänks bruset i den kondenserade signalen med kvadratroten av n. Men utan förändring i frekvensfördelning av bruset). Video Demonstration. Denna 18 sekunders, 3 MByte-video (Smooth3.wmv) demonstrerar effekten av triangulär utjämning på en enda Gaussisk topp med en topphöjd på 1,0 och toppbredd på 200. Den ursprungliga vita brusamplituden är 0,3, vilket ger en första signal till - noise-förhållandet av ca 3,3. Ett försök att mäta toppamplitud och toppbredd för den högljudda signalen, som visas längst ner i videon, är initialt allvarligt felaktig på grund av bruset. Eftersom den smidiga bredden ökas förbättras dock signal-brusförhållandet och noggrannheten hos mätningarna av toppamplitud och toppbredd förbättras. Men över en jämn bredd av ca 40 (jämnt förhållande 0,2) får utjämningen toppen att vara kortare än 1,0 och bredare än 200, även om signal-brusförhållandet fortsätter att förbättras, eftersom den smidiga bredden ökas. (Den här demonstrationen skapades i Matlab 6.5. SPECTRUM, freeware Macintosh-signalbehandlingsprogrammet innehåller rektangulära och triangulära utjämningsfunktioner för varje antal punkter. Kalkylblad. Utjämning kan göras i kalkylblad med hjälp av skift - och multipliceringsmetoden som beskrivs ovan. kalkylblad utjämning. ods och utjämning. xls uppsättningen multipliceringskoefficienter finns i formlerna som beräknar värdena för varje cell i den jämnformade data i kolumnerna C och E. Kolumn C utför en 7-punkts rektangulär jämn (1 1 1 1 1 1 1) och kolumn E gör en 7-punkts triangulär slät (1 2 3 4 3 2 1), applicerad på data i kolumn A. Du kan skriva in (eller Kopiera och klistra in) alla data du vill ha i kolumn A och Du kan förlänga kalkylbladet till längre kolumner med data genom att dra den sista raden av kolumnerna A, C och E ner efter behov. Men för att ändra den smidiga bredden måste du ändra ekvationerna i kolumnerna C eller E och kopiera ändringarna ner hela kolumnen. Dess vanliga prac tice att dela upp resultaten med summan av koefficienterna så att nettovärdet är enighet och området under kurvan för den jämnde signalen bevaras. Kalkylbladet UnitGainSmooths. xls och UnitGainSmooths. ods innehåller en samling av enhetskonfigurationskoefficienter för rektangulära, triangulära och gaussiska slätar med bredd 3 till 29 i både vertikalt (kolumn) och horisontellt (rad) format. Du kan kopiera och klistra in dem i dina egna kalkylblad. Kalkylbladen MultipleSmoothing. xls och MultipleSmoothing. ods visar en mer flexibel metod där koefficienterna finns i en grupp med 17 intilliggande celler (i rad 5, kolumnerna I till och med Y), vilket gör det lättare att ändra den släta formen och bredden (upp till högst 17). I det här kalkylbladet appliceras den släta tre gånger i följd, vilket resulterar i en effektiv jämn bredd på 49 punkter som tillämpas på kolumn G. Jämfört med MatlabOctave är kalkylblad mycket långsammare, mindre flexibla och mindre lätt automatiserade. Till exempel, i dessa kalkylblad, för att ändra signalen eller antalet punkter i signalen, eller för att ändra den smidiga bredden eller typen, måste du ändra kalkylbladet på flera ställen, samtidigt som du gör detsamma med funktionen MatlabOctave fastsmooth ( nedan) behöver du bara ändra inmatningsargumenten för en enda kodrad. Och att kombinera flera olika tekniker till ett kalkylblad är mer komplicerat än att skriva ett MatlabOctave-skript som gör detsamma. Utjämning i Matlab och Octave. Den anpassade funktionen fastsmooth implementerar skift och multiplicerar typ smidningar med hjälp av en rekursiv algoritm. (Klicka på den här länken för att inspektera koden, eller högerklicka för att ladda ner för användning inom Matlab). Fastsmooth är en Matlab-funktion i formuläret sfastsmooth (a, w, typ, kant). Argumentet a är ingångssignalvektorn w är den släta bredden (en positiv heltalstyp) bestämmer den släta typen: typ1 ger en rektangulär (glidande medel eller boxkar) slät typ2 ger en triangulär jämn, motsvarande två passager i ett glidande medelvärde typ3 ger en pseudo-gaussisk jämn, motsvarande tre pass av ett glidande medelvärde dessa former jämförs i figuren till vänster. (Se SmoothingComparison. html för en jämförelse av dessa utjämningslägen). Argumentkanten styr hur signalens kanter (de första w2-punkterna och de sista w2-punkterna) hanteras. Om kant0 är kanterna noll. (I detta läge är den förflutna tiden oberoende av den släta bredden. Det ger den snabbaste exekveringstiden). Om kant1, kanterna mjukas med gradvis mindre glattar närmare slutet. (I detta läge ökar körtiden med ökande släta bredder). Den släta signalen returneras som vektorn s. (Du kan lämna de två senaste inmatningsargumenten: snabbsmooth (Y, w, typ) släpper med kant0 och snabbsmooth (Y, w) släpper med typ1 och kant0). Jämfört med convolution-baserade släta algoritmer använder fastsmooth en enkel rekursiv algoritm som vanligtvis ger mycket snabbare körningstider, speciellt för stora smidiga bredder kan det släta en 1.000.000 punktsignal med ett glidande medelvärde på 1 000 punkter på mindre än 0,1 sekund. Här är ett enkelt exempel på snabbsmooth som visar effekten på vitt brus (grafiskt). SegmentedSmooth. m. illustrerad till höger är jag en segmenterad multipelbredd d ata-utjämningsfunktion baserad på snabbsmoo-algoritmen, vilken kan vara användbar om bredden av topparna eller brusnivån varierar väsentligt över signalen. Syntaxen är densamma som fastsmooth. m. förutom att det andra inmatningsargumentet smoothwidths kan vara en vektor. SmoothY SegmentedSmooth (Y, smoothwidths, typ, ends). Funktionen delar Y till ett antal områden med lika längd definierad av längden av vektorens jämna bredd, och släpper sedan varje region med en jämn typ av typ och bredd definierad av elementen av vektorens jämna utbredningar. In the graphic example in the figure on the right, smoothwidths31 52 91 . which divides up the signal into three regions and smooths the first region with smoothwidth 31, the second with smoothwidth 51, and the last with smoothwidth 91. Any number of smooth widths and sequence of smooth widths can be used . Type help SegmentedSmooth for other examples examples. DemoSegmentedSmooth. m demonstrates the operation with different signals consisting of noisy variable-width peaks that get progressively wider, like the figure on the right. SmoothWidthTest. m is a simple script that uses the fastsmooth function to demonstrate the effect of smoothing on peak height, noise, and signal-to-noise ratio of a peak. You can change the peak shape in line 7, the smooth type in line 8, and the noise in line 9. A typical result for a Gaussian peak with white noise smoothed with a pseudo-Gaussian smooth is shown on the left. Here, as it is for most peak shapes, the optimal signal-to-noise ratio occurs at a smooth ratio of about 0.8. However, that optimum corresponds to a significant reduction in the peak height . which could be a serious problem. A smooth width about half the width of the original unsmoothed peak produces less distortion of the peak but still achieves a reasonable noise reduction. SmoothVsCurvefit. m is a similar script, but is also compares curve fitting as an alternative method to measure the peak height without smoothing . This effect is explored more completely by the text below, which shows an experiment in Matlab or Octave that creates a Gaussian peak, smooths it, compares the smoothed and unsmoothed version, then uses the max, halfwidth. and trapz functions to print out the peak height, halfwidth, and area . (max and trapz are both built-in functions in Matlab and Octave, but you have to download halfwidth. m. To learn more about these functions, type help followed by the function name). x0:.1:10 yexp(-(x-5).2) plot(x, y) ysmoothedfastsmooth(y,11,3,1) plot(x, y,x, ysmoothed, r) disp(max(y) halfwidth(x, y,5) trapz(x, y)) disp(max(ysmoothed) halfwidth(x, ysmoothed,5) trapz(x, ysmoothed) 1 1.6662 1.7725 0.78442 2.1327 1.7725 These results show that smoothing reduces the peak height (from 1 to 0.784) and increases the peak width (from 1.66 to 2.13), but has no effect on the peak area, as long as you measure the total area under the broadened peak. Smoothing is useful if the signal is contaminated by non-normal noise such as sharp spikes or if the peak height, position, or width are measured by simple methods, but there is no need to smooth the data if the noise is white and the peak parameters are measured by least-squares methods, because the results obtained on the unsmoothed data will be more accurate (see CurveFittingC. htmlSmoothing ). The MatlabOctave user-defined function condense. m. condense(y, n). returns a condensed version of y in which each group of n points is replaced by its average, reducing the length of y by the factor n. (For x, y data sets, use this function on both independent variable x and dependent variable y so that the features of y will appear at the same x values). The MatlabOctave user-defined function medianfilter. m. medianfilter(y, w). performs a median-based filter operation that replaces each value of y with the median of w adjacent points (which must be a positive integer). killspikes. m is a threshold-based filter for eliminating narrow spike artifacts. The syntax is fy killspikes(x, y, threshold, width). Each time it finds a positive or negative jump in the data between y(n) and y(n1) that exceeds threshold, it replaces the next width points of data with a linearly interpolated segment spanning x(n) to x(nwidth1), See killspikesdemo. Type help killspikes at the command prompt. ProcessSignal is a MatlabOctave command-line function that performs smoothing and differentiation on the time-series data set x, y (column or row vectors). It can employ all the types of smoothing described above. Type help ProcessSignal. Returns the processed signal as a vector that has the same shape as x, regardless of the shape of y. The syntax is ProcessedProcessSignal(x, y, DerivativeMode, w, type, ends, Sharpen, factor1, factor2, SlewRate, MedianWidth) iSignal is an interactive function for Matlab that performs smoothing for time-series signals using all the algorithms discussed above . including the Savitzky-Golay smooth, a median filter, and a condense function, with keystrokes that allow you to adjust the smoothing parameters continuously while observing the effect on your signal instantly, making it easy to observe how different types and amounts of smoothing effect noise and signal, such as the height, width, and areas of peaks. (Other functions include differentiation, peak sharpening, interpolation, least-squares peak measurement, and a frequency spectrum mode that shows how smoothing and other functions can change the frequency spectrum of your signals). The simple script iSignalDeltaTest demonstrates the frequency response of iSignals smoothing functions by applying them to a single-point spike. allowing you to change the smooth type and the smooth width to see how the the frequency response changes. View the code here or download the ZIP file with sample data for testing. Use the A and Z keys to increase and decrease the smooth width, and the S key to cycle through the available smooth types. Hint: use the Gaussian smooth and keep increasing the smooth width until the peak shows. Note: you can right-click on any of the m-file links on this site and select Save Link As. to download them to your computer for use within Matlab. Unfortunately, iSignal does not currently work in Octave. An earlier version of his page is available in French, at besteonderdelen. nlblogp4169. courtesy of Natalie Harmann and Anna Chekovsky . Last updated February, 2017. This page is part of A Pragmatic Introduction to Signal Processing , created and maintained by Prof. Tom OHaver. Department of Chemistry and Biochemistry, The University of Maryland at College Park. Comments, suggestions, bug reports, and questions should be directed to Prof. OHaver at tohumd. edu. Unique visits since May 17, 2008:

Comments