Uppsala University Dept. of Information Technology Division of Systems and Control EG 19 november 2009 MB 17 november 2015 Transformmetoder (W3) 2015 Projektinstruktion: Spektralanalys med hjälp av den diskreta Fouriertransformen Deadlines Utkast: 27:e november 2015, kl 23:59 Slutgiltig : 10:e januari 2016, kl 23:59 Innehåll I Introduktion 1 1 Inledning 1 2 Mål 1 3 Utförande och examination 1 II 3 Projektproblem 4 Problemformulering 4.1 Inledande exempel: Analys i tidsdomän och frekvensdomän 4.2 Upplösning och zeropadding . . . . . . . . . . . . . . . . . . 4.3 Variansreduktion i spektrumet . . . . . . . . . . . . . . . . 4.4 Praktisk tillämpning . . . . . . . . . . . . . . . . . . . . . . III . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Extramaterial 5 Introduktion till MATLAB 5.1 MATLAB-kommandon . . . . . . 5.1.1 Enskilda kommandon . . 5.1.2 Grafik . . . . . . . . . . . 5.1.3 Att spara och läsa in data 5.1.4 Att skriva program . . . . 5.1.5 Allmänna kommandon . . 3 3 3 4 5 9 . . . . . . . . . . . . . . . . . . i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 10 11 11 12 12 Del I Introduktion 1 Inledning Ni ska i detta projekt studera hur den diskreta Fouriertransformen (DFT) kan användas för att studera frekvensinnehållet i en signal/tidsserie. Projektet består av flera små deluppgifter där man i den sista kan välja mellan att antingen studera energiförbrukningen i Sverige, data från magnetresonansspektroskopi, data från sprängämnet TNT eller undersöka tonerna i ett valfritt musikinstrument. Projektsinstruktionen består av tre delar. Del I är en introduktion om projektets uppbyggnad och syfte. Del II beskriver problemen som ska lösas med hjälp av MATLAB. Del III innehåller tips om användbara MATLAB-kommandon. 2 Mål Syftet med detta projekt är att • ge förståelse för Fouriertransformen och hur man kan använda den i praktiken för att få ut frekvensinformation ur en tidsserie/signal (diskreta Fouriertransformen), • få övning i att använda MATLAB som hjälpmedel, • öva på att skriva en kortfattad teknisk rapport. 3 Utförande och examination Projektet utförs i grupper om (högst) fyra studenter. Det finns ett schemalagt tillfälle i datorsal med lärarstöd där studenterna kan arbeta med projektet och få handledning. I övrigt förutsätts studenterna lösa problemen på egen hand t.ex. i någon av de datorsalar som finns tillgängliga. Handledning ges av Marcus Björk, rum P2337, e-postadress [email protected]. Med fördel kan man boka tid för möte via mail, alternativt ställa eventuella frågor direkt via mail. Innan ni börjar med projetket bör ni titta igenom det teorikompendie som hör till ”Spektralanalys - konsten att hitta frekvensinnehållet i en signal”. Där får ni kopplingen mellan det matematiska fallet, med oändligt utsträckta och kontinuerliga funktioner, och det praktiska fallet, med signaler samplade i ett finit antal punkter. Examinationen för projektet sker genom en kortfattad, men korrekt skriven, rapport på svenska eller engelska. Rapporten och eventuella rester skall lämnas in via Studentportalen som en pdf 1 under Transformmetoder, Inlämningar, Projektrapporter W3. Rapporten ska vara skriven så att någon som har läst kursen i transformmetoder men inte har gjort detta projekt kan förstå vad som har gjorts, samt vara läsbar utan instruktionen. 1 Ett bra program för att skriva ut filer som pdf är PDFCreator om ni inte kan spara som pdf direkt i det program ni använder (dvs Word2003 eller tidigare). 1 Det finns en checklista som i stora drag beskriver vad som krävs. Se till att pricka av checklistan innan rapporten skickas in! I allmänhet skall rapporten följa instruktionen ”Att skriva en teknisk rapport”. Bifoga väl valda figurer som stödjer era slutsatser samt er MATLABkod så att fel kan detekteras! Ni behöver inte beskriva hur MATLAB-funktionerna ni använder fungerar, ange bara vilka de är. Icke godkända rapporter måste kompletteras enligt kommentarer från projekthandledaren. Allt material finns att ladda ner på http://www.it.uu.se/katalog/ marbj996/transformmetoder/p2ht15. Den slutgiltiga deadlinen för projektet är 10:e januari 2016, kl 23:59. Efter denna deadline kommer inga rester att ges, så se till att bli godkända INNAN detta datum. Den 27:e november 2015, kl 23:59 måste man lämna in ett utkast där man behandlat de första tre problemen i projektet (4.1–4.3). Detta ger ett tillfälle att få feedback inför den sista delen av rapporten som är en praktisk tillämpning där man själv måste använda det man lärt sig av de inledande problemen. Rapporterna rättas i allmänhet löpande och rester ges vid behov. Detta betyder att man kan avklara projektet innan juluppehållet om man så önskar. Kom ihåg: för att bli godkänd i Transformmetoderkursen så måste man vara godkänd på projektet. 2 Del II Projektproblem 4 Problemformulering I detta avsnitt presenteras de olika problemen som ska lösas i projektet. För att bli godkänd krävs att samtliga delar är godkända. Använd teorikompendiet! Där finns även lite kod som kan vara till hjälp. 4.1 Inledande exempel: Analys i tidsdomän och frekvensdomän Undersök vilka frekvenser som bygger upp den brusiga uppmätta ljudsignalen som finns att ladda ned på http://www.it.uu.se/katalog/marbj996/transformmetoder/p2ht15. Signalen är samplad med fs = 2000 Hz. Öppna .mat-filen i MATLAB och börja med att lyssna på signalen med kommandot: soundsc(y,Fs). Plotta sedan signalen i tiden och försök se vilka periodiciteter (tydliga frekvenser eller ”sinusar”) den innehåller. Använd sedan istället Periodogrammet för att skatta och undersöka spektrumet (frekvensinnehållet). Kom ihåg att man kan zooma i alla MATLAB-figurer för att titta närmare på detaljerna, t.ex. ett kortare avsnitt av signalen. • Hur många tydliga periodiciteter (frekvenser) finns det och vilka är dessa? • Vad finns det för fördelar med att titta på en signal i frekvensdomänen istället för tidsdomänen? • Vilken periodicitet har störst amplitud? Tänk på att ni enbart behöver studera första halvan av signalen i frekvensdomän när ni använder FFT-kommandot. Andra halvan är bara en spegling eftersom datat är reellt (se teorikompendiet). Notera att signalen innehåller vitt brus. Anledningen att man kallar det vitt är, i analogi med synligt ljus, att det är vitt om det innehåller alla frekvenser. Vitt brus har alltså samma energi vid alla frekvenser. 4.2 Upplösning och zeropadding Upplösningen hos spektrumet är en viktig detalj i spektralanalys. Med ”upplösning” menar man hur nära två frekvenser kan vara utan att flyta ihop till en enda topp i spektrumet. Letar du efter periodiciteter i datat och hittar endast en topp i spektrumet skulle det alltså ändå kunna finnas flera närliggande toppar som inte kan särskiljas! I denna del ska upplösningen hos Periodogrammet studeras. Skapa ens signal som innehåller två sinusar med vardera frekvensen f1 = 0.2 och f2 = f1 + ∆f och amplituderna 1. Lägg inte till något brus i denna simulering! s(t) = sin(2πf1 t) + sin(2πf2 t) (1) För att underlätta analysen sätts samplingsfrekvensen till fs = 1 Hz och N = 100 sampel. Börja med ∆f = 0.1 och skatta signalens spektrum med Periodogrammet. Minska sedan ∆f i små steg mot 0, skapa nya signaler och plotta Periodogrammet för varje. Gör sedan om samma experiment med zeropadding L = 10N (se teorikompendiet). Testa sedan även ännu mer zero padding, t.ex. L = 100N . 3 • Vilket är det minsta ∆f , för vilket de två sinusarna (topparna i spektrum) går att upplösa? • Vad gör zeropadding och när behöver man använda det? • Vad händer med upplösningen i detta fall då zeropadding tillämpas och varför? • Finns det någon anledning att använda L = 100N ? Varför/varför inte? Redovisa plottar av spektrum, med och utan zeropadding, som styrker era slutsatser. Använd gärna MATLAB-kommandot subplot för att lättare kunna göra jämförelser mellan plottar. 4.3 Variansreduktion i spektrumet När man skattar spektrum med ett beränsat antal sampel så kommer skattningen på olika sätt vara osäker. Som exempel tenderar Periodogrammet av en brusig signal även ge ett spektrum som ser brusigt ut, dvs. variansen i denna skattning är hög. Det är viktigt att skilja på variansen av bruset i signalen (som är en del av det man vill skatta) och den osäkerhet eller varians som man har i själva skattningen av spektrum (”hur brusigt spektrumet ser ut”), vilket beror på metoden. Signalen som skall undersökas har fs = 1 Hz och N = 1024 sampel och finns att ladda ned på projekthemsidan http://www.it.uu.se/katalog/marbj996/transformmetoder/p2ht15. Skatta och undersök signalens spektrum med hjälp av Periodogrammet och Bartletts metod (se teorikompendiet). För Bartletts metod kan man testa att använda P = 2, 4, 8 och 16, vilket alltså innebär att signalen delas in i 2, 4, 8 respektive 16 delar innan Periodogrammet beräknas för varje och ett medelvärde av resultaten tas. Skriptet bartlettse(y,P,L) ligger tillsammans med datat och skapar en spektrumskattning med hjälp av Barletts metod för ett givet antal delintervall P . Ni kan skriva ”help bartlettse” i MATLAB för mer information. • Vilken inverkan har P på variansen och upplösningen av skattningen? Jämför med Periodogrammet. • Kan vi få både hög upplösning och låg varians? • Vilken varians (= effekt [Watt]) har det vita bruset i signalen (se 4.1 för infomation om vitt brus)? • Vilken skattning ger bäst estimat av brusets spektrum? Ni kan använda samma metod som i föregående problem för att titta på upplösningen, eller direkt från figurerna med varierande P dra slutsatser (motivering krävs). Redovisa era slutsatser samt relevanta plottar som styrker dessa. 4 4.4 Praktisk tillämpning Ni ska här välja en av följande fyra praktiska problem. a) Analys av klimatvariationer. Datat består av temperaturskillnader (relativt dagens klimat) skattade från iskärnor och är hämtat från http://www.ncdc.noaa.gov/paleo/metadata/noaa-icecore-2453.html2 . National Climatic Data Center har även en massa annat intressant klimatdata som är tillgängligt för allmänheten. Totalt så stäcker sig datat som skall analyseras ca 420000 år tillbaka i tiden. Ursprungligen är datat inte samplat uniformt i tiden, men för enkelhetens skull är det data som ni skall analysera omsamplat i 10000 sampel med ett samplingsintervall på ca 42 år (Ts). På så sätt kan vi utan modifikation använda periodogrammet och Bartlett’s metod. Ladda ned datat från http://www.it.uu.se/katalog/marbj996/transformmetoder/p2ht15 och ladda in det i MATLAB. Vi får två vektorer, en som innehåller temperaturdifferenserna (tempDiff), och en som anger isens ålder (iceAge). Plotta temperaturen mot isens ålder för att få en översikt av tidsberoendet. Notera att i MATLAB så kommer den högra delen av figuren visa den äldsta isen (högsta åldern). Därför är det smart att invertera x-axeln, vilket man kan göra i plot tools eller genom att ge kommandot set(gca,’xdir’,’reverse’). Spektralanalysera datat och försök indentifiera periodiciteter temperaturen. Eftersom medelvärdet i datat inte är noll måste ni dra bort detta innan utför er spektralanalys, annars får ni en topp för frekvensen noll (en konstant) som kan försvåra analysen av andra mer intressanta delar av spektrum. Detta görs enklast med kommandot x = x - mean(x); i MATLAB. • Vilka periodiciteter skulle vi kunna förvänta oss? Se t.ex. https://sv.wikipedia.org/ wiki/Milankovic-cykler. • Vilka periodiciteter kan ni hitta? Jämför periodogrammet och Bartlett’s metod. • Är det motiverat att använda zeropadding? Varför/varför inte? • Kan denna analys säga något om vad vi bör förvänta oss för klimat i framtiden? Redovisa era slutsatser samt relevanta plottar som styrker dessa. 2 Petit, J.R., et al., 2001, Vostok Ice Core Data for 420,000 Years, IGBP PAGES/World Data Center for Paleoclimatology Data Contribution Series #2001-076. NOAA/NGDC Paleoclimatology Program, Boulder CO, USA. 5 b) Analys av elförbrukningen i Sverige Här studerar ni elförbrukningen i Sverige. Datat är hämtat från Svenska Kraftnäts hemsida (http://www.svk.se/aktorsportalen/elmarknad/statistik/) där man kan ladda ned statistik för elproduktion och förbrukning i excel-format. På projekthemsidan finns data med statistik för förbrukningen år 2014 klart att laddas in i MATLAB. Datat anger den totala förbrukningen per timme i MWh och målet är att studera vilka periodiciteter vi kan hitta och jämföra med våra förväntningar. Eftersom medelvärdet i effektförbrukningen inte är noll måste ni dra bort detta innan utför er spektralanalys, annars får ni en stor topp för frekvensen noll (en konstant) som kan försvåra analysen av andra mer intressanta delar av spektrum. Detta görs enklast med x = x - mean(x); i MATLAB. • Vilka periodiciteter tror ni på förhand att ni kommer hitta, hur bör energiförbrukningen variera över ett år (snabba/långsamma förändringar)? • Spektralanalysera datat för att se om det stämmer överens med era förväntningar. • I datat finns ”övertoner” d.v.s. multiplar av en grundfrekvens. Varför behövs dessa för att bygga upp signalen? Se ledning nedan. Redovisa era slutsatser tillsammans med relevanta plottar som styrker dessa. Ledning: Plotta t.ex. en vecka av elförbrukningsdatat i tiden. Hur ser variationerna i förbrukningen ut mellan t.ex. dag och natt? Är förändringarna mjuka som en sinus eller mer abrupta? Som exempel ges nedan Fourierserien för en fyrkantsvåg med perioden 2L och ett exempel av signalen visas i Fig. 1. ∞ 4 X 1 nπt f (t) = sin , (2) π n L n=1,3,... 1 f(t) 0.5 0 -0.5 -1 0 2 4 6 8 10 12 14 16 t Figur 1: Exempel på en fyrkantsvåg med L = 1. 6 18 20 c) Analys av MRS data Magnetresonansspektroskopi (MRS) är ett viktigt diagnostiskt hjälpmedel när man t.ex. letar efter tumörer i hjärnan. Från att tidigare ha varit tvungen att ta vävnadsprover, s.k. biopsi, kan man idag med MRS undersöka patienten utan ingrepp. Principerna för MRS bygger på att man rätar först upp atomernas magnetiska moment genom att lägga på ett kraftigt magnetfält (längs z-axel). Sedan exciterar man atomerna så att de vrids till ett högre energitillstånd med en hjälp av en elektromagnitisk puls (RF-signal). Efter excitation faller de magnetiska momenten tillbaka till grundtillståndet samtidigt som de roterar kring magnetfältet. Detta ger upphov till en periodisk signal med dämpning i xy-planet. Beroende på till vilken molekyl och hur de exciterade atomerna är bundna, fås vågor med olika frekvenser. Signalen från en MRS-undersökning kan alltså approximeras med en summa av vågor med olika frekvenser från olika ämnen. Beroende på vilken grundämne man exciterar (vanligen väte, fosfor, natrium eller fluor) kan man se en rad olika ämnen i vävnaden. Tabell 1 visar exempel på ämnen man kan urskilja vid fosfor-MRS-skann av hjärnan. I detta problem ska ni ladda ned en simulerad MRS-dataserie från http://www.it.uu.se/ katalog/marbj996/transformmetoder/p2ht15. Serien är ett exempel på en signal från en fosfor-MRS-skann av hjärnvävnad. Notera att signalen är komplexvärd! Detta är vanligt inom MR då signalen uppmäts i ett plan. Istället för att använda vektorer beskriver man rörelsen i planet med komplexa funktioner. Studera Periodogrammet av tidsserien. Serien är samplad med samplingsfrekvens fs = 3 kHz. • Är spektrumet symmetriskt? Varför/varför inte? (ledning: Använd fftshift() för att få frekvensen noll i mitten av spektrumet, se help fftshift() för mer information, och skapa en frekvensaxel från -fs/2 till fs/2.) • Redogör med hjälp av Tabell 1 för vilka ämnen som förekommer i just denna signal och dess frekvenser. • Är det motiverat att använda Bartletts och/eller zeropadding? Varför/varför inte? Ämne β-ATP 1 β-ATP 2 β-ATP 3 α-ATP 1 α-ATP 2 γ-ATP 1 γ-ATP 2 Fosfokreatin Fosfodiester Oorganisk fosfor Fosfomonoester Frekvens [Hz] -86 -70 -54 152 168 292 308 360 440 490 530 Tabell 1: Exempel på ämnen i hjärnvävnad och deras frekvenser vid fosfor-MRS, samplade med fs = 3 kHz. ATP = adenosintrifosfat. Redovisa era slutsatser samt relevanta plottar som styrker dessa. 7 d) Frekvensanalys av en ljudsignal Denna del går ut på att via en dator spela in en ljudsekvens och sedan undersöka frekvensinnehållet i signalen. Valet av ljudkälla bör vara en signal som inte förändrar sina egenskaper under den tid den spelas in och som har någon tonal komponent. Det kan t.ex. vara en ton från ditt favoritinstrument, en stämgaffel eller varför inte ljudet från en visselpipa eller din egen vissling (hur rent kan du vissla?). Tal är inte lämpligt! Det går även att hitta på andra exempel som kan vara intressanta som ljudet från en motor eller en eltandborste, men det är bra om man har en uppfattning om vilken frekvens man förväntar sig. Om du väljer ett instrument kan du pröva att spela in flera toner och undersöka om frekvensanalysen stämmer med ”musikteorin” (t ex ska tonen ”normal A” ,dvs A i ettstrukna oktaven, ha frekvensen 440 Hz). • Finns det en grundton/dominant ton? • Stämmer frekvensen överens med vad ni förväntat er? • Finns det övertoner (multiplar av grundtonen) och vilka frekvenser har de? • Varför uppkommer övertoner? • Illustrera hur Bartletts metod påverkar resultatet och kommentera. • Finns det anledning att använda zeropadding? Varför/varför inte? Några tips Inspelning: Använd en dator med intern eller extern mikrofon och spela in med ”Ljudinspelaren” eller dylikt. Lagra filen som ljudfil (wav-format, Microsoft PCM). Det bör räcka med att spela in någon sekund. OBS: I bland annat Windows 7 har den inbyggda ”ljudinspelaren” blivit mer begränsad, du kan t.ex. inte lyssna på dina ljud längre. Sedan har de även tagit bort alternativet att spara som wav-fil. För att kunna spara som wav-fil måste man köra programmet genom att i sök-fältet på start-menyn (eller i kommandoraden) skriva: soundrecorder /file out.wav. Ett annat alternativ är att ladda hem ett gratis-program för inspelning och redigering av ljud, som t.ex. Audacity, som är ett mycket mer avancerat verktyg. Överföring av ljudfilen till MATLAB: Med hjälp av kommandot wavread (se vidare information genom att skriva help wavread direkt i MATLAB) kan en ljudfil i wavformat3 läsas in till MATLABs workspace. För att få rätt enhet på frekvensaxeln vid analysen ska också samplingsfrekvensen läsas in. Om ljudfilen t.ex. heter elgitarr.wav, lagras ljudfilen och dess samplingsfrekvens i MATLAB med kommandot [y,fs] = wavread(’elgitarr’). Kontrollera gärna att signalen låter som den ska med kommandot soundsc(y,fs). 3 Notera att enligt dokumentationen för wavread stöds endast Microsoft PCM dataformat. 8 Del III Extramaterial 5 Introduktion till MATLAB MATLAB är en förkortning av MATRIX LABORATORY och är ett matrisbaserat integrerat system för numeriska beräkningar och grafisk presentation av data. Programmet är mycket kraftfullt och har blivit en standard inom många discipliner. En sak man måste komma ihåg är att MATLAB inte är symboliskt utan numeriskt (även om det finns en symbolisk del). Om man ändrar en variabel x så måste man beräkna om alla andra variabler som beror av x, detta görs inte automatiskt. MATLAB vet heller inte vad du har räknat ut (t.ex sin(x)) utan har bara ett numeriskt värde för detta. MATLAB har en kärna av inbyggda kommandon och funktioner. Dessa kommandon kan delas in i följande tre huvudklasser: klass 1. matrisoperationer 2. grafik 3. data exempel [V, D] = eig(X) plot(x, y) semilogy(x, y) save filnamn load filnamn beskrivning egenvektorer och egenvärden till matrisen X plottar y mot x plottar log10 (y) mot x sparar alla variabler i filen filnamn läs in alla variabler i filen filnamn Skript i MATLAB kallas för m-filer eftersom de slutar på .m. Dessa är vanliga textfiler som innehåller en sekvens av kommandon. För att styra programflödet i filerna används kommandon som for, while, och if. Man konstruerar enkelt egna makrofiler med hjälp av en vanlig texteditor. I MATLAB finns en integrerad texteditor som enkelt kan nås från menyn eller genom att skriva ”edit” i kommandoraden eller genom att skapa en ny m-fil i menyn. MATLAB har ett mycket användbart system för hjälp. Systemet är uppbyggt kring kommandot help. Den huvudsakliga användningen är på formen ‘help kommando’, vilket ger hjälp om kommandot kommando. Mycket användbart! Notera också att omfattande hjälp finns tillgänglig R via menyn samt på Mathworks hemsida, http://www.mathworks.com/help/techdoc/. MATLAB har en mycket flexibel och omfattande programmeringsmiljö och det tar lång tid att lära sig alla dess funktioner och möjligheter. Ett sätt att komma i gång med MATLAB är att studera några enkla exempel, vilket vi ska göra i nästa avsnitt. 5.1 MATLAB-kommandon Vi ska här studera några praktiska exempel hur man använder MATLAB. Följande moment kommer att behandlas: 1. Enskilda kommandon. 2. Plotta data. 3. Att spara och läsa in data. 4. Att skriva program. 5. Allmänna kommandon. 9 5.1.1 Enskilda kommandon Variabler skapas då man tilldelar dem ett värde. Dessa variabler läggs då i Workspace. Om man skriver ’;’ i slutet på ett godtyckligt kommando så skrivs resultatet inte ut i Command Window, det lagras bara i den variabel som tilldelas (t.ex. x=1 alt. x=1;). Specificering av matriser: 1 2 3 1 ger kolonnvektorn x = 2 3 1 2 3 ger matrisen A = 4 5 6 7 8 9 1 ger 1:a kolonnen av A, z = 4 7 ger 1:a raden av A, w = [ 1 2 3 ] tar ut element med radindex M och kolonnindex N ger en matris med kolonnerna z och y (z och y måste ha rätt dimensioner) ger radvektorn t = [ 0 0.1 0.2 . . . 10 ] generellt [startvärde:inkrement:slutvärde] ger samma vektor t som ovan. Generellt linspace(a,b,N) ger intervallet [a b] i indelat i N punkter ger radvektorn x = x=[1 2 3]=[1,2,3] y=[1;2;3] A=[1 2 3;4 5 6;7 8 9] z=A(:,1) w=A(1,:) a=A(M,N) D=[z y] t=[0:0.1:10] t=linspace(0,10,101) Speciella matriser: A=ones(M,N) A=zeros(M,N) A=eye(N) A=randn(M,N) ger ger ger ger en en en en M × N matris av ettor M × N matris av nollor N × N enhetsmatris M × N matris av normalfördelade slumptal Matrisberäkning, CMN betecknar en matris med M rader och N kolonner (dimensionerna på matriserna måste stämma överens, alternativt att den ena är en skalär): C=A+B C=A*B x=A\b C=A’ C=inv(A) CMN är summan av AMN och BMN CMN är matrisprodukten av AML och BLN x är lösningen till ekvationssystemet Ax = b, alternativt minsta kvadrat-lösningen om ingen exakt lösning existerar CNM är komplexkonjugerade transponatet av AMN CMM är inversen av AMM Elementvis beräkning (A och B måste ha samma dimension, alternativt att den ena är en skalär): 10 C=A.*B [1 2 3].*[4 5 6] C=A./B [1 2 3]./[4 5 6] C=A.^k [1 2 3].^2 C=A.’ C=conj(A) Multiplikation ger 4 10 18 Division ger 14 52 36 Exponent ger 1 4 9 Transponat, men ej komplexkonjugering Komplexkonjugering Andra användbara kommandon: length(x) ger längden av vektorn x sin(t) sinus av vektorn t abs(x) absolutbeloppet av vektorn x mean(x) medelvärdet av vektorn x fft(x) beräknar DTF av vektorn x i L=length(x) punkter fft(x,L) DFT av vektorn x, uträknat i L punkter (zeropadding om L >length(x), annars trunkering) ifft(X) inversa DFT av vektorn X fftshift(x) skiftar plats på första och andra halvan av vektorn x 5.1.2 Grafik När man använder plot så skapas automatiskt ett fönster om inget sådant redan är öppet. Om man plottar igen så skrivs detta över om man inte öppnar ett nytt fönster alternativt använder hold on enligt nedan för att skapa en figur med två grafer eller fler i samma fönster. plot(y) plottar vektorn y mot elementens index. plot(x,y) plottar vektorn y mot vektorn x. plot([x y]) plottar kolonnvektorerna x och y i samma diagram. loglog(y) plottar vektorn y i ett loglog-diagram (log-axlar). figure skapar ett nytt tomt figurfönster. subplot(M,N,k) nästa plot hamnar i del nummer k av en M rader och N kolonner stor matris med plot-axlar. hold on nästkommande plottar hamnar i samma figur. hold off nästkommande plottar skriver över tidigare. close all stänger ned alla figurer. legend(’graf1’,’graf2’,...) sätter etikett på de olika kurvorna i samma figur. title(’En graf som visar...’) namnger figuren. xlabel(’mått [enhet]’), ylabel namnger axlarna. axis([xmin xmax ymin ymax]) sätter gränserna på axlarna. 5.1.3 Att spara och läsa in data För att spara de variabler man har genererat i MATLAB, och därmed finns i Workspace, används kommandot save. För att läsa in variabler som tidigare sparats används kommandot load. Exemplen nedan visar hur dessa kommandon används. 11 save filnamn save filnamn a b c load filnamn sparar alla variabler i Workspace i filen filnamn.mat sparar de i Workspace definierade variablerna a b c i filen filnamn.mat läser in alla variabler som sparats i filen filnamn.mat Använder man MATLABs eget gränssnitt kan man även klicka och släppa för att läsa in data och ladda sparade figurer. Man kan också importera data i många olika format direkt via Workspace, samt mycket annat. Pröva gärna själva! 5.1.4 Att skriva program Gå in på File-menyn och tryck på New om ny fil skall skapas eller Open M-file för att redigera gammal fil. Skriv önskad kod precis som i Command Window och spara filen med ett filnamn som slutar på .m (t.ex. test.m). Dessa filer kan nu köras från Command Window genom att skriva filens namn (i detta fall test). 5.1.5 Allmänna kommandon help kommando clear variabel clear clc exit ger information om kommandot kommando raderar varabeln variabel ur workspace raderar alla variabler i workspace rensar det som skrivits i command window lämnar MATLAB 12
© Copyright 2024