Saturday, 18 November 2017

Glidande medelvärde topp detektering


Arduino Frekvensdetektion Som en uppföljning till Arduino Audio Input-handledningen som jag skrev i förra veckan skrev jag en skiss som analyserar en signal som kommer in i Arduinos analoga ingång och bestämmer frekvensen. Koden använder en samplingsfrekvens på 38,5 kHz och generaliseras för godtyckliga vågformer. Ive visade också LED-lampan kopplad till stift 13 i en klipindikator, så du vet om du behöver justera signalsamplituden när du skickar den till Arduino. Några projektidéer för koden som presenteras här inkluderar: tonreaktiva projekt - ändra färg på RGB-lysdioder med tonhöjd eller skapa ett lås som bara öppnas när du sjunger en viss tonhöjd eller melodi-ljud till MIDI-konvertering - få Arduino att översätta en inkommande signal till en serie MIDI-meddelanden. Se min instruktioner om att få Arduino att skicka och ta emot MIDI för många exempelkod för att komma igång med ljudeffekter - använd frekvensinformationen för att rekonstruera en ljudsignal från tonen () - biblioteket eller med några sparade prover för att skapa en cool effects boxsynthesizer första steget i detta projekt är att ställa in ljudingångskretsen. Jag skrev en detaljerad instruktion om det här. Steg 1: Detektering av signalhöjden Först ville jag experimentera med toppdetektering, så jag skrev ett stycke kod (nedan) som matar ut en hög signal när den inkommande ljudsignalen har en positiv lutning och matar ut en låg signal när inkommande ljud Signalen har en negativ lutning. För en enkel sinusvåg genererar detta en pulssignal med samma frekvens som sinusvågen och en arbetscykel på 50 (en kvadratvåg). På detta sätt ligger topparna alltid där pulsvågan växlar mellan höga och låga tillstånd. Den viktiga delen av koden återges nedan. All denna kod sker i ADC-avbrottet (avbryter och körs varje gång en ny analog i värde är klar från A0, mer information om vilka avbrott är och varför vi använder dem kan hittas här) prevData newDatastore tidigare värde newData ADCHget värde från A0 om (newData gt prevData) PORTB B00010000set pin 12 hög annars om (newData lt prevData) PORTB amp B11101111set pin 12 low Jag bör notera här att i denna handledning använder jag direkt portmanipulation för att stänga av och på utmatningsstiftet (stift 12) av Arduino. Jag gjorde det här eftersom portmanipulationen är ett mycket snabbare sätt att adressera Arduinos-tapparna än kommandot digitalWrite (). Eftersom jag var tvungen att sätta hela koden ovan inuti en avbrottsrutin som gick ut på 38,5 kHz, behövde jag koden vara så effektiv som möjligt. Du kan läsa mer om portmanipulation på Arduino webbplats. eller se kommentarerna Ive skrivit ovan för att förstå vad varje rad gör. Du kommer också märka i koden nedan att jag använde några okända kommandon i funktionen setup () så att jag kunde få Arduinos analoga ingång att prova vid en hög frekvens. Mer information om det finns i min Arduino Audio Input-handledning. Fig 1 visar pulsutgången i blått och sinusvågen i gult på ett oscilloskop. Lägg märke till hur pulsvattenväxeln växlar varje gång sinusvågen når max eller minsta. Fig 2 visar pulsutgången i blått för en godtycklig vågform i gult. Observera här hur pulsvåg tar på en oregelbunden arbetscykel eftersom den inkommande signalen (gul) är mycket mer komplicerad än en sinusvåg. ltpgthello mamma. Jag fascineras av din kod. mam im gör för närvarande ett designprojekt som upptäcker nödfordon med sin sirenfrekvens. tycker du att det är möjligt med dina koder som grunden för det. Jag behöver verkligen lite hjälp med det här. Det är väldigt mycket. Jag har kunnat räkna ut problemet och det fungerar bra för min mikrofonkrets. Också tack för att jag förstår avbrott better. ltpgt ltpgtHello Amanda, ltpgtltpgt Tack så mycket för det här mycket informativa inlägget. ltpgtltpgt Jag jobbar för närvarande på en pitch-kontrollerad LED-julljus och I39m med din kod för tonhöjdsdetektering, I39m med min egen krets, electret mic config och jag läser ampquotinf hzampquot vilket innebär att perioden är ampquot0ampquot men när jag håller ledningen ensam är det ansluten till a0 den läser vissa frekvenser. Jag tryckte ampquotperiodampquot och det visar ampquot0ampquot som bekräftar det. ltpgtltpgtAnya idéer om varför perioden är 0ltpgt ltpgtEdit: Jag tror att jag fick reda på varför de inmatade värdena jag får är inte tillräckligt stora eftersom de inte har tillräckligt bred marginal bortsett från max och minvärden. ltpgt ltpgtTack för projektltpgtltpgtI har konstruerat ljudingångskretsen som anges i länken längst upp på denna sida. I39m försöker konstruera en enhet som bara skulle tända ledningen kopplad till Uno när en specifik frekvens detekteras av mikrofonen. I39m har problem med att utveckla kod för den här uppgiften och behöver lite vägledning. ltpgtltpgtIf någon kan hjälpa det som kommer att bli bra, så är det likt att det är bra. Jag har provat det med en elektretmikrofon med en förstärkare, men jag får inte en ren utgång på seriell bildskärm. I grund och botten är de frekvenser som spetsar ut över kartan. Om jag till exempel spelar den en anteckning runt 70 Hz (I39m planering på att placera den på min upprepa bas, så jag har använt det för att testa) kommer det att ge mig en massa frekvenser som kan vara från 10Hz till 7000Hz, ge mig flera i en rad som är cirka 70Hz, sedan tillbaka till hela, etc. Även när jag spelade en 440Hz-anteckning från en tuner gav det mig en anständig mängd slumpmässighet. ltbrgtltbrgtMy gissning är att jag behöver justera värdena för slopeTol och timerTol, eftersom de slumpmässiga frekvenserna ofta (men ofta inte) är en del av den i39m som jag letar efter, vilket gör att jag tror att det saknas några övergångar. Tror jag rätt, jag vet verkligen inte vilken som ska ändras och hur mycket jag har klistrat på dem båda och de är för närvarande på sluttningTol 2 och timerTol 15. Eventuella idéer om några ballpark varierar för dessa om jag vill måla toner från min bas Är det någon annan del som jag borde tweak Tack för hjälpen. I39d gillar verkligen att använda din metod istället för FFT eller FHT, eftersom det verkar mycket effektivare för mitt projekt. ltpgt ltpgtSee post above. ltpgt ltpgtEn sak jag tänkte på: just nu driver jag Arduino via USB, eftersom jag använder seriell övervaka att felsöka. Skulle du använda USB som strömkälla skulle du lägga till ljud till signalen Mitt projekt kommer att drivas med ett 9V batteri och jag har en ansluten nu, bara avstängd. Skulle det hjälpa till att få 9V-källan utöver att vara ansluten till USB måste jag hålla den inkopplad för att använda seriell bildskärm, men om det är vad som orsakar problemen. Det är väldigt mycket för denna fråga, trots att jag har en fråga: Jag tycker om Arduino att känna igen några av de anteckningar jag spelar med min klarinett (så levande ljud), hur är det möjligt att göra detta utan att behöva använda en digital trackltpgt ltpgtIt39s möjlighet att göra detta med bara kretsen och code. ltpgtltpgt Jag använder en variation av denna skiss för att läsa utmatningen från en gitarruppsamling och visa string39s frekvens och intonation (en justering som korrigerar övertoner).ltpgtltpgtSå vi använder instrument måste vi överväga vissa negativa effekter av harmonicsovertones. Jag har inkluderat ett lågpassfilter (4.7K och 6.8uF - konservering allt över 5kHz.) Du vill ha ett filter som gör att din högsta anteckning kan komma igenom - förutsatt att du inte överblåser eller spelar med övertoner. ltpgtltpgtDouble din högsta spelbara anteckningen och konvertera sedan det till en frekvens - sätt in ett if-meddelande för att inte visa allt ovanför det. ltpgtltpgtlta hrefquotphy. mtu. edu suitsetvsmean. htmlltagtltpgtltpgtÄndra koden för att dela någon samplad frekvens till en grundläggande listed. ltpgtltpgtA 10uF kopplingskondensator fungerade inte bra med den här kretsen för min avsedd ansökan. Ett värde på 4.7uF tillåter istället att jag har en ganska flytande avläsning i min terminalskärm. Jag har också tagit bort 47nF kondensatorn till marken. Allt det gjorde var att hålla fast på mitt prov för länge och förhindra noggrann mätning. Itpgtltpgt Jag håller på att skriva en rubrik för musikaliska beräkningar som inkluderar FHTFFT-algoritmer - men allt du behöver göra är att använda din föredragna metod för att identifiera och hantera olika nummer values. ltpgtltpgtdouble noteFrequency 440 Concert 39A39 - 440 hzltpgtltpgtdouble avvikelse 4 nobody39s perfectltpgtltpgtdouble hiRange, loRangeltpgtltpgthiRange noteFrequency deviationltpgtltpgtloRange noteFrequency - deviationltpgtltpgtif (frekvens ampgt Lorange ampampampamp frekvens amplt hiRange) ltpgtltpgt ltpgtltpgtExpand detta som du kommer utan it39s en grundläggande start. ltpgtltpgtThanks för en utmärkt instructable Amandaltpgt ltpgtAside från att uppfinna en analog dator eller använda kvanträkning, de datoranordningar vi alla använder vet 139s och 039s. Med en digital signal hänvisar 10-bit till 2101024, det vill säga med tio onoff-switchar, det finns 1024 kombinationer. Det är därför det finns steg till vågan. ltpgtltpgtDet ljud som vi hör är intensiteten över tiden, hur högt ett ljud är, berättar inte för oss vilken anteckning det var. FFT är en 39transform39 för att visa intensitet över frekvensen, då när vi ser intensitet vid en viss frekvenskynote ser vi att noten spelades. Det finns bibliotek som använder Teensy-mikrokontroller som körs vid 120 MHz och kan prova och göra en FFT för att bestämma anteckningar. Börja titta där. Det enda sättet jag kunde tänka på att det är möjligt annars är om det var ett litet mönster med exakta anteckningar kan det hända att du kan göra det med hjälp av set mycket specifika uppsättning bandpassfilter, men det här sättet skulle ha andra problem. Ltpgt ltpgtI39m arbetar på ett personligt projekt om ljudfrekvensdetektering med Arduino. Jag har en fråga att fråga dig om varför den senaste frekvensen som detekteras av programvaran som upprepas i seriell monitor. ltpgtltpgtI menar att medan jag spelar ett ljud och då jag inte har någon signal i raden, skriver seriell bildskärm fortfarande ut den sista frekvens detekterad. Vet du hur du fixar det eller om det är möjligt lämnar jag en bifogad skärmdump för att visa dig vad jag talar om. LtpgtltpgtThanksltpgt ltpgtthank dig för thisltpgt ltpgtTack mycket för att skicka ut detta mycket tydliga och hjälpsamma projekt. Det bygger jag på men använder ljudkortets utgång på en dator (eller liknande, som en telefon eller mediaplayer) som en ingång. Eftersom dessa signaler är mycket starkare slog jag ut opampen. För resten är inställningen likadan: ett motstånd () och en pulsmätare (-) som spänningsdelare före 10uF Cap och två motstånd (ampamp-) som spänningsdelare på andra sidan. Och 47nF kondensatorn mellan signalen och (-). Det fungerar ganska bra men läsningarna visar inkonsekvenser f. i. många linjer med en nästan perfekt 80,80-82,01Hz och helt plötsligt en 25,94Hz (och påfallande ofta halva värdena på signalen) eller säga en 12820,67Hz som passerar. Och ofta kommer likartade felaktiga störningar upp i början och i slutet av en signal. ltbrgtFör ett konstverk som jag vill styra en servo med denna teknik, med något som rör sig i sinc med en video (antingen direkt (frekvens är position) eller genom en ssc32 (frekvens är position och signallängd är hastighet) med dragningar passerade över). Därför är dessa hopp ganska irriterande. Jag försökte tweaking mycket med inställningarna i ditt program (ampThreshold, timingTol, slopeTol) och på hardwareside med kondensatorer för att få ripples ut men hittills utan lycka till. Några suggestionsltpgtltpgtMy iduino drivs av datorn för att kunna läsa avläsningarna och jag har inte ett oscilloskop för att kontrollera datorns signalutgång. Jag försökte andra källor men med liknande resultat. ltpgtltpgtMany tack ändå för de instruerbara som redan hjälpt mig mycket och många tack på förhand. ltpgtltpgtMatthijsltpgtltpgtps: ltbrgtsteering servos på det här sättet verkar vara en slags omväg men manuellt sätta rätt blockignaler på rätt ställe och spela dem med mediaplayer tycktes vara ännu mer arbete. Med hjälp av frekvenstekniken blir den mycket mer flexibel och allestädes närvarande. ltpgt ltpgtTack för att du delar Amanda. Jag behöver inte starta från nollpunkten på min automatiska gitarrmottagare projektltpgtltpgt Men jag har en fråga. Kan jag använda en piezo för att plocka upp vibrationen eller ljudet istället för att använda en mikrofon som gör det möjligt för tunern att arbeta i bullriga miljöer? Kan. Jag använder den på en fiol. För närvarande är algoritmen lite sporadisk men om du sänker tiden och sluttningstoleranserna fungerar det lite bättre. Jag tror att om du omstrukturerar koden för att få hela 10 bitars upplösning istället för 8 bitar, borde du kunna göra denna kod bättre. Men de extra instruktionscyklerna kan hindra andra operationer. Jag har också fått ett projekt på samma sätt, och jag undrade detsamma om att hämta ljud från andra källor (eller instrument, eftersom jag planerar att använda den medan jag spelar). Med hjälp av en piezo kom i åtanke, glad att se någon har gjort det framgångsrikt. Jag undrade vad du använde för att hålla din piezo på ditt instrument. Jag vill inte göra någonting som skulle skada träet. Har du använt någon form av lim som är säker för stränginstrumentet? Jag har provat en under broupphämtningen, liksom en bropinne på hämtning. En generisk stångpiozo och en Shadow SH 3001. Jag använde den på en dedikerad elektrisk så att stångpiozoen var lämplig och mycket billigare, men det finns filmtyp under broupphämtningarna som realistiska pickupar som borde fungera för dig. Jag har funnit att blandning av båda typerna pickup (horisontella och veritcal) genom en billig behringer micromix mx400 ger riktigt bra resultat, även om du måste kämpa med två ledningar istället för bara en. ltpgt ltpgtGotcha, tack. Jag kan se om jag kan hitta något sådant för min upprättstående bas. Jag planerar att använda den för att styra en LED-remsa, så jag behöver nog inte kvaliteten för att vara ganska så hög en pickup ska göra det. Behöver du koppla upp den med hela uppstartskonfigurationen från Audio Input-handledningen, eller har några förstärkare byggt inltpgt ltpgtYes, måste du förstärka det lite baserat på spänningsresponsegenskaperna hos det element du använder. Du måste tinker eftersom ingen två piezo39s är desamma. Det finns många projekt för arduino där ute om hur man gör det här, sök bara på ampquotarduino audio inputampquot om ovanstående schematisk inte är tillräckligt beskrivande för dig. Ltpgt ltpgtSå med denna arduino kod skulle jag kunna styra en light39s frekvens med frekvensen av ljudet Jag vill bygga ett belysningssystem för mitt rum och bil som kommer att reagera med ljudet, men på ett sätt så att bassampquotcool colorsampquot, treble ampquotwarm colorsampquot (eller till och med vice versa). Det känns som om det skulle ge en bättre upplevelse till musiken. När du klarar av att få din idé att fungera har jag en liknande projektidé. Jag har en liknande projektide. ltpgt ltpgtHi Amanda, ltpgtltpgtTack för det mycket användbara arbetet du har gjort, nu kan jag mäta frquensen från mitt jordbruk applikation som använder en exciter ring. ltpgtltpgt Jag har en qustion hur kan jag byta till en annan analog stift i ideltpgtltpgtThanks, ltpgtltpgtRien BrandltpgtltpgtNetherlandsltpgt ltpgtNot säkert om du hittade svaret på din quesiton, men om du tittar upp ADMUX registrera i databladet för din atmega you39ll se hur man byter analog till digital converter. ltpgtltpgtHere39s en länk för att förstå ADMUXltpgtltpgtrobotplatformknowledgeADCadctutorial3.htmlltpgt ltpgtVi gjorde det, äntligen med problem. Vi använde elgitarr för detta ändamål. Tack Amanda. Fortsätt det goda arbetet ltpgt ltpgt Hej Amanda tack för din delning. jag vill fråga om den här ... Jag jobbar med att utveckla en Arduino human scream detection Det är möjligt att jag upptäcker mänsklig hjälp skrika röst med denna typ av Arduino program eftersom jag vill bygga upp komponenten bestå av bandpass filter. gain och rectifier krets och leta efter sin tonhöjdsdetektering och röstvarv. Om du har någon aning om den krets som det är svårt att slutföra mitt projektltbrgtOr är det möjligt att använda något Arduino-bibliotek och skriva taligenkänningen codeltpgt ltpgtHi Amanda, tack så mycket för den här källan. mycket fantastiskt. ltpgtltpgtbut. litet problem min arduino. ltpgtltpgtyour källa är exellent. ltpgtltpgtbut. min arduino fungerar inte ltpgtltpgtmy arduino version. är. ltpgtltpgt8-bitltbrgtMicrocontrollerltbrgtwith 256K BytesltbrgtIn-SystemltbrgtProgrammableltbrgtFlashltpgtltpgtmaybe. ltpgtltpgtversion är problemet är annorlunda. ltpgt ltpgtHi Amanda, tack så mycket för det här instruktabelt. Mycket användbar. Jag föredrar denna enklare kodversion (integrerad med ampthållare), för att jag vill göra en ljudanalysator. där du visslar eller sjunger en ampquotooohampquot note och då har du frekvensen. Att göra en bärbar byggd med en fyrsiffrig skärm och där är det en perfekt gadget för någon ljudingenjör eller musiker, som vill veta vilken frekvens som orsakar mikrofon feedbacks. ltpgtltpgtDoes det ger någon mening att samla ett antal mätningar och göra ett matematiskt medelvärde som jag Jag behöver inte en snabb process, men en långsammare och mer solid (utan ampquotgarbageampquot mätningar) Jag försökte en ampquotforampquot-cykel med en enkel uppsättning, men det verkar inte lägga till någon precision (kanske vet jag inte vart jag ska säga det). ltpgt Hej Amanda. dina instruktioner på arduino är bra ... men jag vill veta om det är möjligt att mäta en amplitud av sinusvåg på arduino ltpgtTack för instruktionen jag bara sätter ihop en krets med en förstärkt elektretmikrofon med hjälp av opampmatning i den. Men när jag tittar på seriell utmatning verkar det bara fungera för första sekunden eller 2, så slutar det att arbeta med den sista raden ser ut som den bifogade bilden. Någon aning om vad som kan vara orsak till tacksägelsen. Det här är ett utmärkt projekt. Det fungerar bra på min arduino uno. Men jag behöver det att köra på en arduino mega med Ethernet-skärm. När du lägger koderna till mitt ethernetprojekt är anslutningen till internet brocken (I39m laddar upp data på xively server). Något förslag till hur mycket vi hämtade frekvensen. Jag vill upptäcka frequncy-intervallet 60Hz till 100Hz. kan jag använda detta programnamn tack och snabb svar från dig? Det här är fantastiskt I39m som tittar på en gitarr-MIDI-pedal, men en DIY-lösning är billigare och kallare. Props till dig för denna fantastiska bit av codeltpgt ltpgtHi, har någon avslutat det här projektet (möjligen med en diff slags mikrofon) och skulle inte ha delat om det. Är en nybörjare och skulle verkligen vilja prova det här. lite mer detaljerade steg skulle vara till hjälp: Dltpgt ltpgtHi amanda, jag vill gratulera med dig på detta instruktioner, verkligen kraftfullt: DI har en fråga, det vill säga är det möjligt att kontrollera frekvenserna för en spelsång på detta sätt, genom en aux-signal från en MP3-spelare eller ljudkabeln för bärbara datorerna (efter den högra hanteringen av signalen som i din instruktör om du har en inbyggd signal) Låt dig ta bort ett mycket ltpgtltpgtDltpgt ltpgtHet som helst gjort det här projektet med ChipKit Uno32. Jag letar verkligen efter sådana projekt för min Uno32 development board eftersom jag behöver läsa analog signalfrekvens som kommer från optisk rotation sensor. ltpgt Stort arbete I39m försöker använda denna kod för ett automatiskt laseroscilloskop jag designar. Det har visat sig att koden slutar mäta frekvenser så snart jag försöker analogRead () från en annan analog stift. För tillfället förstår jag inte helt den lägre planeringen av ADC som du har gjort. Finns det något sätt att läsa från de andra analoga stiften utan att störa mätningen i måtten ja, hur det här sättas upp, avaktiveras alla andra analoga stiften. du kan läsa ett analogt värde från en digital stift genom att använda RCTime: ltbr gtarduino. ccenTutorialRCtime ltbr gtinstructablesidArduino-Basics-RCtime ltbr gthope som fungerar för vad du gör. ltpgtTack för den stora artikeln. Jag undrar bara att jag kan använda en mikrofon med en preamp för att göra detektion. ltpgtltpgtI har följande: ltagtltpgtltpgtThank you very muchltpgt ltpgti försökte bygga gitarr tuner lta hrefquotinstructablesidArduino-Guitar-TunerALLSTEPSquot relquotnofollowquotgtinstructablesidArduino-Guitar-Tun. ltagtltpgtltpgtbut arduino kan inte läsa ingången från min gitarr. Du kan hjälpa mig att lösa det här problemet. Det har du ett oscilloskop. Det går inte att få oscilloskop. ltbrgtdoes bli ett problem om jag använder 100nF Cap på DC-offset ltpgtltpgti se ditt projekt använda 47nF Cap. ltbrgtltpgt ltpgtno som borde vara bra. Du behöver ett oscilloskop för att felsöka det här, kanske se om det finns en lta targetquotblankquot hrefquothackerspaces. orgwikiListofHackerSpacesquotgthackerspaceltagt eller skolan nära dig där du kan använda en för free. ltpgt ltpgtwhat är det största problemet att ingången från gitarr inte kan nå Arduinoltbrgtltbrgtwherher projektet kan slutföras om det finns oscilloskop. Det går att försöka använda en dator som driver audacity som ett provisoriskt oscilloskop för att ta reda på var signalen går vilse. Har du en ljudingång på din dator? Jag har. ltbrgthow för att göra ljudutgång från förstärkare och DC-offsetkrets till min dator. det finns 3 utgångar ampquotA0. 5v och GNDampquotltpgt ltpgtI39m ny i Arduino, jag vill göra det här med en elektret mikrofon, jag tycker att det är väldigt annorlunda än den mikrofon du använde. Hur kan jag göra kretsen med en Electret Microphoneltpgt ltpgtit shouldn39t vara för olika, men du kanske behöver ändra förstärkaren på förstärkaren som går in i Arduino39s analoga stift. Du kommer antagligen vilja ha ett oscilloskop handy så att du kan se vad du gör. ltpgt ltpgt Vet du om det finns ett virtuellt oscilloskop som jag kan använda som ett PC-program. Om mikrofonen, jag använder en Elecret Microphone med Breakout Board (förstärkare medföljer), jag ansluter den direkt till Arduino, det är allt som du kan använda ljudingången på din kompis och spela in med Audacity eller something. ltpgtHow att köra På en smart motorväg En smart motorväg använder teknik för att aktivt hantera trafikflödet. Tekniken styrs från ett regionalt trafikcentral. Kontrollcentren övervakar trafiken noggrant och kan aktivera och ändra tecken och hastighetsbegränsningar. Detta hjälper till att hålla trafikflödet fritt. Smarta motorvägar ökar vägens kapacitet, utan bekostnad och krångel för att utöka vägen, genom att antingen antingen tillfälligt eller permanent öppna den hårda axeln till trafiken. Highways England är ansvarig för smarta motorvägar i England. Snabba tips På en smart motorväg: Kör aldrig i en körfält stängd med en röd X Håll dig till hastighetsgränsen som visas på gantriesna En solid vit linje indikerar den hårda axeln - kör inte in den om den inte riktas. en bruten vit linje indikerar en normal körruta om ditt fordon upplever svårigheter, t. ex. varningsljus, avsluta den smarta motorvägen omedelbart om möjligt, använd skyddsområdena för nödsituationer om det inte finns någon hård axel sätta på dina riskljus om du bryter ner inte driven på en smart motorväg Se vår genomkörningssimulering: En kort översikt över smarta motorvägar: En av de viktigaste tecknen för att lära känna på en smart motorväg är den röda X. Detta indikerar att en lane är stängd. Om du ser en röd X som stänger en körfält, flyttar du snabbt bort från den körfältet. Om du inte kan du få böter. En lane kan vara stängd eftersom det finns skräp på vägen, eller på grund av en person eller ett djur på vägen. Det kan finnas en olycka eller en uppdelning framåt. Vi kan hålla körfältet klart för akuttjänsten, till exempel en ambulans. Så för din egen säkerhet och andras säkerhet, kör aldrig i en körfält stängd med en röd X. PDF. 2.1MB. 3 sidor Den här filen kanske inte är lämplig för användare av hjälpteknik. Begär ett tillgängligt format. Om du använder hjälpteknik (t. ex. en skärmläsare) och behöver en version av detta dokument i ett mer tillgängligt format, vänligen maila infohighwaysengland. co. uk. Vänligen berätta vilket format du behöver. Det hjälper oss om du säger vilken hjälpteknik du använder. I en nödsituation Förebyggande är bättre än botemedel: håll din bil väl underhållen, kontrollera dina däck och se till att du har tillräckligt med bränsle för din resa. Alla bilister ska kunna göra egna återhämtningsarrangemang vid en uppdelning. Vi rekommenderar att du har nedbrytningsskydd och bära detaljer om detta med dig. Försök alltid att lämna smart motorväg omedelbart om ditt fordon är skadat eller upplever svårigheter. Om det inte är möjligt, flytta till närmaste plats för relativ säkerhet. På de flesta motorvägar blir det den hårda axeln. Men på en smart motorväg kan det inte alltid vara en hård axel, eller den hårda axeln kan vara öppen för trafik. I dessa fall kommer du att se nödsituationer (ERA) som regelbundet ligger längs motorvägen. Gör din väg till närmaste. Du bör följa dessa steg: Använd en nödsituation om du kan nå en på ett säkert sätt. Dessa är märkta med blå tecken med en orange SOS telefonsymbol på dem. Om du kan lämna ditt fordon på ett säkert sätt, kontakta Highways England via vägtelefonens nödtelefon som finns i alla nödsituationer. Vi skickar antingen en trafikansvarig till dig eller ställer in motorvägsskyltarna för att tillfälligt rensa körfält 1 för att hjälpa dig att återkomma till motorvägen. Om du inte kan komma till ett nödsituation, men fordonet kan köras, flytta det till den hårda axeln (där den finns) eller så nära närbelägen eller andra närliggande gränser som möjligt. I samtliga fall ska du sätta på dina varningsljus. Om du stannar i närliggande körfält bredvid en hård axel eller kant och känner att du kan lämna säkert med alla passagerare, överväga att lämna ditt fordon via dörren till höger (vänster hand) och vänta bakom säkerhetsbarriären om det finns en och säkert att göra det. Om det inte går att komma ut ur ditt fordon säkert, eller om det inte finns någon annan plats för relativ säkerhet att vänta, borde du stanna i ditt fordon med säkerhetsbältet och ringa 999 om du har tillgång till en fungerande mobiltelefon. När den regionala trafikkontrollcentralen är medveten om din situation, via polis eller vägteknik som CCTV, kan de använda smarta motorvägstekniken för att ställa in skyltar och stänga körfältet för att hålla trafiken borta från dig. De kommer också att skicka en trafikansvarig eller polisen för att hjälpa dig. Hastighetsbegränsningar På en smart motorväg kan hastighetsbegränsningar uppstå på överhöga signaler. Dessa gränser kan ändras för att hjälpa till att hantera trafik vid upptagna tider. Detta hjälper till att minska trafikflödet och förhindra stop-starttrafik orsakad av shockwave-trafikstockningar: Om ingen speciell hastighetsgräns visas, gäller den nationella hastighetsgränsen. En hastighetsgräns som visas i en röd cirkel är lagligt verkställbar. Om du inte behåller denna hastighetsgräns bryter du lagen. Hastighetskameror är i drift på smarta motorvägar. Om du inte behåller hastighetsgränsen kan du få böter. Användning av hård axel På smarta motorvägar ser du fristäder som regelbundet ligger bredvid motorvägen. Du bör använda dessa i nödsituationer. Det beror på att på vissa smarta motorvägar kan den hårda axeln öppnas för att trafik ska kunna användas vid upptagna tider. Om den är öppen för användning ser du en hastighetsgräns som visas över den. Om det inte finns något tecken eller ett rött X visas, gäller normala hårda axelregler. Med andra ord, använd inte det utom i nödsituationer. En hård axel är alltid tydligt identifierad med en solid vit obruten linje. På andra typer av smarta motorvägar har den hårda axeln permanent omvandlats till en extra lane. Om så är fallet ser lane ut som vilken annan lane som helst, dvs den är märkt med en trasig vit linje. PDF. 520KB. 4 sidor Den här filen kanske inte är lämplig för användare av hjälpteknik. Begär ett tillgängligt format. Om du använder hjälpteknik (t. ex. en skärmläsare) och behöver en version av detta dokument i ett mer tillgängligt format, vänligen maila infohighwaysengland. co. uk. Vänligen berätta vilket format du behöver. Det hjälper oss om du säger vilken hjälpteknik du använder. Kampanjmaterial Om du vill hjälpa till med att stödja våra säkerhetsmeddelanden om smarta motorvägar kan du använda dessa resurser. PDF. 736KB. 5 sidor Den här filen kanske inte är lämplig för användare av hjälpteknik. Begär ett tillgängligt format. Om du använder hjälpteknik (t. ex. en skärmläsare) och behöver en version av detta dokument i ett mer tillgängligt format, vänligen maila infohighwaysengland. co. uk. Vänligen berätta vilket format du behöver. Det hjälper oss om du säger vilken hjälpteknik du använder. PDF. 222KB. 1 sida Den här filen kanske inte är lämplig för användare av hjälpteknik. Begär ett tillgängligt format. Om du använder hjälpteknik (t. ex. en skärmläsare) och behöver en version av detta dokument i ett mer tillgängligt format, vänligen maila infohighwaysengland. co. uk. Vänligen berätta vilket format du behöver. Det hjälper oss om du säger vilken hjälpteknik du använder. PDF. 604KB. 1 sida Den här filen kanske inte är lämplig för användare av hjälpteknik. Begär ett tillgängligt format. Om du använder hjälpteknik (t. ex. en skärmläsare) och behöver en version av detta dokument i ett mer tillgängligt format, vänligen maila infohighwaysengland. co. uk. Vänligen berätta vilket format du behöver. Det hjälper oss om du säger vilken hjälpteknik du använder. Jag jobbar med en stor mängd tidsserier. Dessa tidsserier är i grunden nätverksmätningar som kommer var 10: e minut, och några av dem är periodiska (dvs bandbredd), medan vissa andra arent (dvs mängden av routingtrafik). Jag vill ha en enkel algoritm för att göra en online-outlierdetektering. I grund och botten vill jag hålla i minnet (eller på disken) hela historiska data för varje tidsserie, och jag vill upptäcka någon outlier i ett levande scenario (varje gång ett nytt prov tas in). Vad är det bästa sättet att uppnå dessa resultat Jag använder för närvarande ett glidande medelvärde för att ta bort lite ljud, men då vilka enkla saker som standardavvikelse, galen. mot hela datasatsen fungerar inte bra (jag kan inte anta att tidsserierna är stationära), och jag skulle vilja ha något mer exakt, helst en svart låda som: dubbel outlierdetection (dubbel vektor, dubbelvärde) där vektorn är en uppsättning dubbelhaltiga Den historiska data och returvärdet är anomalitetsvärdet för det nya provvärdet. frågade aug 2 10 kl 20:37 Ja, jag har antagit att frekvensen är känd och specificerad. Det finns metoder för att uppskatta frekvensen automatiskt, men det skulle komplicera funktionen avsevärt. Om du behöver uppskatta frekvensen, försök att fråga en separat fråga om det - och jag kommer noga att svara men det behöver mer utrymme än jag har tillgång till i en kommentar. ndash Rob Hyndman Aug 3 10 vid 23:40 En bra lösning kommer att ha flera ingredienser, inklusive: Använd ett resistent, rörligt fönster glatt för att avlägsna nonstationaritet. Uttrycka de ursprungliga uppgifterna så att resterna med avseende på glatt är ungefär symmetriskt fördelade. Med tanke på beskaffenheten av dina data, är det troligt att deras kvadratrotsar eller logaritmer skulle ge symmetriska rester. Applicera kontrolldiagrammetoder, eller åtminstone kontrolldiagramtänkandet, till rester. Så långt som det sistnämnda går, visar kontrolldiagramtänkandet att konventionella trösklar som 2 SD eller 1,5 gånger IQR bortom kvartilerna fungerar dåligt eftersom de utlöser för många falska out-of-control-signaler. Människor brukar använda 3 SD i kontrolldiagramarbete, varav 2,5 (eller till och med 3) gånger IQR bortom kvartilerna skulle vara en bra utgångspunkt. Jag har mer eller mindre redogjort för Rob Hyndmans lösning, samtidigt som jag lägger till två huvudpunkter: det potentiella behovet att återpröva data och visionen att vara mer konservativ när det gäller att signalera en outlier. Jag är inte säker på att Loess är bra för en online-detektor, men eftersom det inte fungerar bra vid slutpunkterna. Du kan istället använda något så enkelt som ett rörligt medianfilter (som i Tukeys resistenta utjämning). Om outliers inte kommer i burst, kan du använda ett smalt fönster (5 datapunkter, som kanske bara bryts ner med en spricka på 3 eller fler avvikelser inom en grupp av 5). När du väl har utfört analysen för att bestämma ett gott återuttryck av data, är det osannolikt att du behöver ändra reexpressionen. Därför behöver din online detektor verkligen bara referera till de senaste värdena (det senaste fönstret) eftersom det inte brukar använda tidigare data alls. Om du har riktigt långa tidsserier kan du gå vidare för att analysera autokorrelation och säsonglighet (t. ex. återkommande dagliga eller veckovisa fluktuationer) för att förbättra förfarandet. svarat 26 aug 10 kl 18:02 John, 1,5 IQR är Tukey39s ursprungliga rekommendation för de längsta whiskersna på en boxplot och 3 IQR är hans rekommendation för markeringspunkter som quotfar outliersquot (en riff på en populär 6039-fras). Detta är inbyggt i många boxplotalgoritmer. Rekommendationen analyseras teoretiskt i Hoaglin, Mosteller, Amp Tukey, Förstå Robust och Exploratory Data Analysis. ndash w huber 9830 okt 9 12 kl 21:38 Detta bekräftar tidsseriedata som jag har försökt att analysera. Fönster genomsnittet och även en standardfel av fönster. ((x - avg) sd) gt 3 verkar vara de punkter jag vill flagga som outliers. Tja åtminstone varna som outliers, jag flagga någonting högre än 10 sd som extrema felavvikare. Problemet jag stöter på är vad som är en ideell fönsterlängd I39m som spelar med allt mellan 4-8 datapunkter. ndash NeoZenith 29 jun 16 kl 08:00 Neo Din bästa satsning kan vara att experimentera med en delmängd av dina data och bekräfta dina slutsatser med test på resten. Du kan också göra en mer formell tvärvalidering (men särskild vård behövs med tidsseriedata på grund av att alla värden är beroende). ndash w huber 9830 29 jun 16 kl 12:10 (Detta svar svarade på en duplicerad (nu stängd) fråga vid Upptäckande av utestående händelser. Som presenterade vissa data i grafisk form.) Utlämningsdetektering beror på dataens natur och vad du är villiga att anta om dem. Allmänna metoder bygger på robust statistik. Andan i detta tillvägagångssätt är att karakterisera huvuddelen av data på ett sätt som inte påverkas av några bortfall och sedan peka på några enskilda värden som inte passar in i den karaktäriseringen. Eftersom det här är en tidsserie, kompletterar den komplikationen med att behöva (åter) upptäcka avvikare på ett löpande sätt. Om detta ska göras när serien utspelas, får vi bara använda äldre data för detektering, inte framtida data. För att skydda mot de många upprepade testen skulle vi vilja använda en metod som har mycket låg falskhet positiv takt. Dessa överväganden tyder på att du kör ett enkelt, robust rörligt fönsterutlöpstest över data. Det finns många möjligheter, men en enkel, lättförståd och lätt implementerad är baserad på en löpande MAD: median absolut avvikelse från medianen. Detta är ett starkt starkt mått på variation inom data, i likhet med en standardavvikelse. En avlägsen topp skulle vara flera MAD eller mer större än medianen. Det är fortfarande en del inställning som ska göras. hur mycket av en avvikelse från huvuddelen av data som ska betraktas som avlägsen och hur långt tillbaka i tid ska man se? Låt oss lämna dessa som parametrar för experiment. Heres en R-implementering tillämpad på data x (1,2, ldots, n) (med n1150 för att emulera data) med motsvarande värden y: Tillämpad en dataset som den röda kurvan som illustreras i frågan ger den följande resultat: Data visas i rött, 30-dagarsfönstret median5MAD-trösklar i grått, och utjämnare - som bara är de datavärdena ovanför gråkurvan - i svart. (Tröskeln kan bara beräknas från början av inledningsfönstret. För alla data i det här inledningsfönstret används det första tröskelvärdet: det är därför den grå kurvan är platt mellan x0 och x30.) Effekterna av att ändra parametrarna är (a) ökar värdet av fönstret tenderar att släta ut den grå kurvan och (b) ökande tröskel ökar gråkurvan. Genom att veta detta kan man ta ett initialt segment av data och snabbt identifiera värden för de parametrar som bäst separerar de yttersta toppar från resten av data. Använd dessa parametervärden för att kontrollera resten av data. Om en plot visar att metoden försämras över tid, betyder det att dataens natur förändras och parametrarna kanske behöver justeras igen. Lägg märke till hur lite denna metod förutsätter data: de behöver inte distribueras normalt, de behöver inte uppvisa någon periodicitet som de inte ens behöver vara negativa. Allt som antas är att uppgifterna uppträder på rimligt sätt över tid och att de yttre toppar är synligt högre än resten av data. Om någon skulle vilja experimentera (eller jämföra någon annan lösning till den som erbjuds här), här är koden som jag brukade producera data som de som visas i frågan. Jag antar att sofistikerade tidsseriemodeller inte fungerar för dig på grund av den tid det tar att upptäcka avvikare med hjälp av denna metodik. Därför är det här en lösning: Först etablera en baslinje normala trafikmönster i ett år baserat på manuell analys av historiska data som står för tidens tid, veckodag vs helg, månad på året etc. Använd denna baslinje tillsammans med en viss enkel mekanism (t. ex. glidande medel som föreslagits av Carlos) för att upptäcka avvikare. Du kanske också vill granska den statistiska processkontrolllitteraturen för några idéer. Ja, det är just det jag gör: Hittills delar jag signalen manuellt i perioder, så att jag för varje av dem kan definiera ett konfidensintervall inom vilket signalen ska vara stationär och därför kan jag använda standardmetoder som sådana som standardavvikelse. Det verkliga problemet är att jag inte kan bestämma det förväntade mönstret för alla signaler jag måste analysera, och därför söker jag efter något mer intelligent. ndash gianluca aug 2 10 på 21:37 Här är en ide: Steg 1: Implementera och uppskatta en generell tidsserie modell på en gång baserad på historiska data. Detta kan göras offline. Steg 2: Använd den resulterande modellen för att detektera outliers. Steg 3: Vid en viss frekvens (kanske varje månad), kalibrerar du tidsseriemodellen (det här kan göras offline) så att ditt steg 2-detektering av utjämnare inte går för mycket ut över det aktuella trafikmönstret. Skulle det fungera för ditt kontext ndash user28 Aug 2 10 at 22:24 Ja, det här kan fungera. Jag tänkte på en liknande inställning (omräknar baslinjen varje vecka, som kan vara CPU-intensiv om du har hundratals univariata tidsserier att analysera). BTW Den verkliga svåra frågan är vad som är den bästa blackbox-stilalgoritmen för modellering av en helt generisk signal, med tanke på buller, trendberäkning och seasonalityquot. AFAIK kräver varje tillvägagångssätt i litteraturen en riktigt hård quotarameter tuningquot-fas, och den enda automatiska metoden jag hittade är en ARIMA-modell av Hyndman (robjhyndmansoftwareforecast). Jag saknar någonting ndash gianluca 2 aug 10 kl 22:38 Igen fungerar det ganska bra om signalen är tänkt att ha en säsongsmässighet på det sättet, men om jag använder en helt annan tidsserie (dvs. den genomsnittliga TCP-rundturstiden över tiden ), fungerar den här metoden inte (eftersom det skulle vara bättre att hantera den med en enkel global genomsnittlig och standardavvikelse med ett glidfönster som innehåller historisk data). ndash gianluca Aug 2 10 kl 22:02 Om du inte är villig att implementera en generell tidsseriemodell (vilket bringar sina nackdelar med latens osv.) är jag pessimistisk att du kommer att hitta en allmän implementering som samtidigt är enkel nog att arbeta för alla slags tidsserier. ndash user28 Aug 2 10 at 22:06 En annan kommentar: Jag vet att ett bra svar kan vara citationstecken du kan uppskatta signalets periodicitet och bestämma algoritmen att använda enligt itquot, men jag hittade inte en riktigt bra lösning på den här andra problem (jag spelade lite med spektralanalys med hjälp av DFT och tidsanalys med autokorrelationsfunktionen, men mina tidsserier innehåller mycket brus och sådana metoder ger några galna resultat mestadels av tiden) ndash gianluca aug 2 10 kl 22:06 A kommentera din senaste kommentar: det är därför jag letar efter ett mer generiskt tillvägagångssätt, men jag behöver en typ av quotblack boxquot eftersom jag inte kan göra något antagande om den analyserade signalen, och därför kan jag inte skapa kvotparametern för inlärningsalgoritmoten. ndash gianluca Aug 2 10 på 22:09 Eftersom det är en tidsserie data, kommer ett enkelt exponentiellt filter en. wikipedia. orgwikiExponentialsmoothing att stryka data. Det är ett mycket bra filter eftersom du inte behöver ackumulera gamla datapunkter. Jämför varje nyligt jämnt datavärde med det ojämna värdet. När avvikelsen överstiger ett visst fördefinierat tröskelvärde (beroende på vad du tror är en outlier i dina data), kan din outlier lätt upptäckas. svarat 30 april 15 kl 8:50 Du kan använda standardavvikelsen för de sista N-mätningarna (du måste välja en lämplig N). Ett bra anomalitetsresultat skulle vara hur många standardavvikelser en mätning är från det rörliga genomsnittet. svarat 2 aug 10 kl 20:48 Tack för ditt svar, men vad händer om signalen uppvisar högsäsong (dvs många nätmätningar präglas av ett dagligt och veckovis mönster samtidigt, till exempel natt vs dag eller helg mot arbetsdagar) Ett tillvägagångssätt baserat på standardavvikelse fungerar inte i det fallet. ndash gianluca aug 2 10 kl 20:57 Om jag till exempel får ett nytt prov var 10: e minut och jag gör en outlier upptäckt av ett företags nätverksbandbreddsanvändning, i grunden klockan 18:00 kommer denna åtgärd att falla ner (det här är en förväntad ett totalt normalt mönster) och en standardavvikelse beräknad över ett glidande fönster misslyckas (eftersom det kommer att utlösa en varning säker). Samtidigt, om åtgärden faller ner klockan 4:00 (avviker från den vanliga baslinjen) är det här en riktig outlier. ndash gianluca aug 2 10 kl 20:58 vad jag gör är att gruppera mätningarna per timme och vecka och jämföra standardavvikelser för det. Ändå stämmer det inte för saker som semester och sommarvintersäsong, men det är rätt för det mesta. Nackdelen är att du verkligen behöver samla ett eller flera år med data för att ha tillräckligt för att stddev börjar bli bra. Spektralanalys detekterar periodicitet i stationära tidsserier. Frekvensdomänmetoden baserad på spektral densitet uppskattning är ett tillvägagångssätt som jag skulle rekommendera som ditt första steg. Om det i vissa perioder innebär oegentlighet en mycket högre topp än vad som är typiskt för den perioden, skulle serien med sådana oegentligheter inte vara stationär och spektralanlysning skulle inte vara lämplig. Men om du antar att du har identifierat den period som har oegentligheterna bör du kunna bestämma ungefär vad den normala topphöjden skulle vara och då kan du sätta ett tröskelvärde på en nivå över det genomsnittet för att ange de oregelbundna fallen. svarat den 3 september kl 14:59 Jag föreslår schemat nedan, vilket bör vara genomförbart på en dag eller så: Samla så många prover som du kan hålla i minnet Ta bort uppenbara avvikare med standardavvikelsen för varje attribut Beräkna och lagra korrelationsmatrisen och även medelvärdet av varje attribut Beräkna och lagra Mahalanobis avstånden av alla dina prover Beräkna outlierness: För det enda provet som du vill veta dess outlierness: Hämta medel, kovariansmatris och Mahalanobis avstånd s från träning Beräkna Mahalanobis avstånd d för ditt prov Återgå den procentuella som d faller (med Mahalanobis avstånd från träning) Det blir ditt outlier-poäng: 100 är en extrem outlier. PS. Vid beräkning av Mahalanobis avståndet. använd korrelationsmatrisen, inte kovariansmatrisen. Detta är mer robust om provmätningarna varierar i enhet och nummer.

No comments:

Post a Comment