Nødhjelp i Matlab-programmering

Slides:



Advertisements
Liknende presentasjoner
Tabeller av objekter Klassen ArrayList
Advertisements

4 Bruk øynene riktig.
Klikk Aktiver redigering i meldingsfeltet.
En innføring i spillet: Lag En Setning
eDialog24 Operator Nyheter og endringer i versjon Sentinel eDialog24 AS Ingvald Ystgaards vei 3A 7047 Trondheim Telefon: Faks:
Intro til programmering i Processing
IT For medisinsk sekretær Fredrikstad Kai Hagali
Gjenfinningssystemer og verktøy II
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Kontrollstrukturer (Kapittel 3)
En innføring i spillet: Dobbeltkrig – Grønn
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
Etter forarbeidet og dagen i dag er målet at dere skal kunne:
Ulike sorteringsmetoder Kompleksitet av dem
Oppstart Hoveddel Avslutning Hver elev taster et 7-sifret tall. Det skal ha fire tall før komma og tre sifre etter komma og det skal ikke inneholde.
MATLAB En kort innføring/repetisjon SIF8001-SIF8005 Høsten 2001.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Grunnleggende matematikk
Gjenfinningssystemer og verktøy II
Gjenfinningssystemer og verktøy II
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
Eksempel AOA (Activity On Arc)
Kompleksitetsanalyse
Forside Motivasjon Analyse Forside Motivasjon Analyse  -notasjon O og  Relasjoner Klasser Fallgruver Spørsmål Kompleksitetsanalyse Åsmund Eldhuset asmunde.
Generelt I/O if/else Funksjoner Lists Løkker Dictionaries Annet Listebehandling Klasser Python med noen algdat-anvendelser Åsmund Eldhuset asmunde *at*
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
Repetisjon kap 6,7,8.
Klargjøring fra forrige gang
INF150 Programmering mandag 11.9
PHP oversikt. Basis egenskaper Grensesnitt med web tjener Skripttaggene Kommentartegn Ikke case sensitiv Avslutningstegn for instruksjoner.
Kap 10 Graf.
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
Dynamisk programmering
PowerPoint laget av Bendik S. Søvegjarto Konsept, tekst og regler av Skage Hansen.
PowerPoint laget av Bendik S. Søvegjarto Konsept, tekst og regler av Skage Hansen.
INF 295 Algoritmer og datastrukturer Forelesning 10 Invarianter og Hashing Hans Fr. Nordhaug (Ola Bø)
1 Organisering av kode (Kapittel 5). 2 Mål ● Forstå inkludering er og hvilken gevinst det gir ● Lære å utvikle egne funksjoner ● Forstå variablenes virkemåte.
Eksempel på SQL ”SQL-setninger” har en struktur som likner på ”naturlig språk”, med ”verb, subjekter og adjektiver”. SQL-setningene begynner alltid med.
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Dynamiske nettsider PHP Del 1 – variable. PHP  PHP (Personal Home Page)  Fritt tilgjengelig programmeringsspråk  åpen kildekode  Plattformuavhengig.
Hvordan kan foreldre bruke de vangligste funksjonene i Itslearning.com
NÅ SKAL VI LÆRE OM LIKNINGER.
INF 4130 Eksamen 2008 Gjennomgang.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 18.9 Lesing av data fra fil og skriving av data til fil. Side 411 – 4.. Kap 4.
Oppgaver til kodegenerering etc. INF-5110, 2013 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet,
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
Magnus Haug Algoritmer og Datastrukturer
Kapping av plater Mål: Vi skal lage komponenter for en møbelfabrikk ut fra standardiserte plater på 12 x 24 dm. Komponentene har lengde og bredde oppgitt.
De 222 mest brukte ordene i det norske språket..
Opplæring: Pålogging Prosedyre for logge på og av, låse og åpne PC’er DatoVersjonForfatterGodkjent avEndringer utført André S. MathiesenTore.
En formel er gyldig hviss den sann i alle tolkninger Utsagnslogikk Tolkning = linje i sannhetsverditabell Altså: En formel er gyldig hviss den har T i.
Sorterings- Algoritmer Algoritmer og Datastrukturer.
INF1800 Logikk og Beregnbarhet. Lærebok: Discrete Structures, Logic, and Computability Utdrag blir pensum. Obs: Første opplag inneholder mange feil, andre.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
En formel er gyldig hviss den sann i alle tolkninger Utsagnslogikk Tolkning = linje i sannhetsverditabell Altså: En formel er gyldig hviss den har T i.
INF1000 (Uke 4) Mer om forgreninger, While-løkker
Inf1000 (Uke 5) Arrayer, filer og tekst
Finne feil - Debugging Introduksjon til sortering.
Brøk, desimaltall og prosent
Matematikk 1 årskurs 26. oktober 2009
Kapittel 7 Array (lister og tabellar). 7.1 Arrayelement Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement.
Jæger: Robuste og sikre systemer INF150 Programmering torsdag 14.9 Ulike måter for å lese inn og skrive ut data. Kap. 3.5 mer om if – setninger Ferdige.
Matematikk LUB Elise Klaveness
Android-Programmering Våren Oversikt Long-running operasjoner Introduksjon til Android services On-demand service Bruk av servicer på tvers av prosesser.
Professor Guttorm Sindre Institutt for datateknikk og informasjonsvitenskap Programmering i Python.
TDT4105 Informasjonsteknologi, grunnkurs
Øvingsforelesning i Python (TDT4110)
Begynnerkurs i Python Realfagskonferansen 2019 Henrik H. Løvold
For, While, prosedyrer m/ parametere, funskjoner
Utskrift av presentasjonen:

Nødhjelp i Matlab-programmering Åsmund Eldhuset Siv.ing. datateknikk, NTNU Bekk Consulting AS

Hva er en datamaskin? En ekstremt rask, men forholdsvis enkel kalkulator ("computer" == "beregner") Følger instruksjoner om hva slags beregninger den skal gjøre Har et minne hvor den tar vare på informasjon (data) Støtter følgende instruksjoner: Aritmetikk (de fire regneartene) Sammenligning (lik, ulik, større enn, mindre enn) Logikk ("og", "eller", "ikke", "hvis") Hoppe til en instruksjon en annen plass Hente data fra minnet og legge data i minnet Har input- og output-enheter som kan hente inn og vise data fra/til omverdenen (skjerm, tastatur, mus, høyttaler, harddisk...)

Hva er et dataprogram? En sekvens av instruksjoner om hva datamaskinen skal gjøre Når man kjører et program, følger datamaskinen instruksjonene

Skalarverdier og operatorer

Skalarverdier og operatorer Boolske operatorer

Output og input til/fra skjerm fravær av semikolon gjør at resultatet av en linje blir skrevet ut bruk disp() til å skrive ut ting i stedet, og sett alltid semikolon input() leser data (vanligvis tall) som brukeren skriver inn med tastaturet inn i en variabel

Variabler En variabel inneholder én verdi av gangen (men verdien kan være en matrise) Tenk på det som en post-it-lapp med et navn og en verdi Tilordning gjøres med = , og det vil umiddelbart slette den gamle verdien Et variabelnavn på venstre side av = betyr "putt verdien på høyre side inn i denne variabelen"; alle andre steder betyr det "bruk verdien av denne variabelen"

who viser eksisterende variabler clear sletter alle variabler

Semikolon og innrykk En kodeblokk er et stykke kode som hører innunder en annen del av koden Følgende setninger starter kodeblokker: function, if, else, else if, for, while. F.eks.: innholdet i if-blokken er den koden som blir utført Setningene som starter kodeblokker skal ikke ha semikolon; alle andre setninger bør ha det Men de er ikke så strenge på semikolonbruk på eksamen For leseligheten sin del bør man rykke inn (med tab-tasten) hver blokk - dvs. at hver linje etter function, if etc. skal rykkes inn, og end (og ingenting annet) skal rykke ut igjen

Uttrykk Tall og matriser er uttrykk Regneoperatorer med andre uttrykk på hver side er også uttrykk Funksjonskall er også uttrykk Et uttrykk som gir en verdi av en bestemt type (skalar/matrise) kan settes overalt hvor en verdi av den typen trengs

Matriser En matrise er en todimensjonal tabell Har et antall rader og et antall kolonner En matrise med én rad og flere kolonner, eller én kolonne og flere rader, kan tenkes på som en liste (En matrise med én rad og én kolonne kan tenkes på som ett enkelt tall) Cellene kan inneholde tall, funksjoner, egentlig hva som helst - men som oftest inneholder hver matrise kun én type ting, og vanligvis tall

Matriser Radene og kolonnene er nummerert, så hver celle har et rad- og et kolonnenummer Å hente ut verdien i en spesifikk celle i en matrise kalles å indeksere matrisen Row major-indeksering: radnummeret kommer først - A(3, 4) er rad 3, kolonne 4 1-basert indeksering: første rad/kolonne er nr. 1 (i mange andre språk begynner man nummereringen på 0)

Matriser Uttrekking av submatriser:

Matriser zeros(m) gir en mxm-matrise med bare nuller zeros(m,n) gir en mxn-matrise med bare nuller eye(m) gir en mxm identitetsmatrise ("eye" skal høres ut som I, symbolet for identitetsmatrisen)

Matriser size(A) gir en 1x2-matrise med antall rader og antall kolonner i A size(A,1) gir ant. rader, size(A,2) gir ant. kolonner lister er egentlig kolonnevektorer, dvs. 1xn-matriser, så man må bruke size(X, 2) eller length(X)

Submatriser Et kolon velger ut en hel rad/kolonne Det går an å ha matriser med høyere dimensjon enn 2, og å bruke flere kolon z = zeros(4, 7, 9); kan man tenke på som en tredimensjonal figur bestående av 4x7x9 små kuber, evt. som en z(:, :, 3) henter ut den tredje 4x7-"skiven" z(

Lister/vektorer En liste er egentlig en radvektor, altså en todimensjonal matrise med én rad, men vi kan late som om den bare har én dimensjon lst = [3 9 8 4] lst(1), lst(2), lst(3), lst(4) er gyldige oppslag lst(1, 1), lst(1, 2), lst(1, 3), lst(1, 4) er det også length(lst) gir 4 size(lst) gir [1 4], size(lst, 1) gir 1, size(lst, 2) gir 4 Kan lage en kolonnevektor (mange rader og én kolonne) med [3; 9; 8; 4]

Ranges 1 : 4 gir [1 2 3 4] 1 : 2 : 5 gir [1 3 5] 1 : 3 : 12 gir [1 4 7 10] 5 : -1 : 2 gir [5 4 3 2] 5 : -2 : 1 gir [5 3 1] 6 : -2 : 1 gir [6 4 2] 3.14 : 0.23 : 4 gir [3.14 3.37 3.60 3.83]

Skript

Funksjoner Forskjellen på funksjoner og skript

Funksjoner Variabelnavn inni funksjoner er bare synlige i den funksjonen, og kan godt være forskjellige fra de "egentlige" navnene på dataene (((Evt.: data har egentlig ikke navn; variabler har navn, og variabler bare refererer til data))) Du kan endre verdien til et argument (men du bør ikke), men endringen vil bare gjelde inni funksjonen Merkelapp-metafor

Funksjoner Returverdi-variabel En funksjonsdeklarasjon ser slik ut: function returvariabel = funksjonsnavn(parametre) funksjonskode end

Funksjoner Resultatet av en funksjon vil ikke automatisk bli husket, så hvis man kaller en funksjon med de samme parametrene inni en løkke, vil den regnes ut på nytt hver gang return vs. end

Funksjonspekere Det er mulig å sende en funksjon som parameter til en annen funksjon Evt. kan det tolkes som at man sender navnet til en funksjon som parameter, for å fortelle den andre funksjonen hvilken funksjon den skal benytte Kan brukes til å gjøre funksjoner mer fleksible / anvendbare Eksempel: map og reduce

Tilfeldige tall

Betingelser / if-blokker Ikke "if-løkker", som mange sier...

Betingelser / if-blokker if- og else if-betingelsene sjekkes etter tur ovenfra og ned Kodeblokken som tilhører den første betingelsen som "slår inn" vil utføres - alle de andre blokkene hoppes over Hvis ingen av betingelsene "slår inn", utføres else-blokken (som ikke skal ha noen betingelse) - men bare hvis den er der; hvis ikke skjer ingenting Så: Hvis det er en else, vil eksakt én av blokkene utføres Hvis ikke, vil inntil én av blokkene utføres

While-løkker Gjentar et stykke kode så lenge en bestemt betingelse er tilfredsstilt Dette kan vi f.eks. bruke til å øke verdien til en variabel trinn for trinn, og typisk gjøre noe med variabelverdien hver gang i = 1; while i < 4 disp(i); i = i + 1; end

While-løkker Når kodeutføringen når "while", sjekkes det om utsagnet som står der er sant - i så fall går man inn i løkken og utfører kodeblokken; ellers hopper man ut forbi "end" Når man når "end", hopper man opp igjen, og utsagnet sjekkes på ny (med evt. oppdaterte variabelverdier)

While-løkker Det som skjer under utførelsen av den viste løkken kan man se for seg slik: i = 1; "er i < 4?" -> ja -> gå inn i blokken disp(i); % printer 1 i = i + 1; % i blir 2 end -> gå opp igjen "er i < 4?" -> ja -> gå inn i blokken disp(i); % printer 2 i = i + 1; % i blir 3 end -> gå opp igjen "er i < 4?" -> ja -> gå inn i blokken i = i + 1; % i blir 4 end -> gå opp igjen "er i < 5?" -> nei -> gå ut til etter end

For-løkker Gjentar et stykke kode en gang for hvert element i en vektor, og lar oss se på "det gjeldende vektorelementet" inni kodestykket Hvis du sliter med å se hvordan de skal bygges opp, prøv å skrive alle linjene fullt ut og prøv å se mønstre break, continue vs. end

For-løkker vs. while-løkker Enhver for-løkke kan skrives som en while-løkke

Tilfeldige tall (lotto-oppgaven)

Lesing og skriving fra/til fil Skiller mellom tekstlig (formatert) I/O og binær I/O Tekstlig: leselig for mennesker. Tall er representert som bytes med tegnkoder for sifrene i tallet Kaster bort en del plass Binært: uleselig for mennesker. Tall er representert på samme måte som i minnet (bits som representerer et binært desimaltall)

Lesing og skriving fra/til fil Innholdet i en fil regnes som én lang liste, men matlab klarer å lese det inn i en matrise likevel hvis du sier hvor høy matrisen er La oss si at du har lyst til å hente kun én verdi fra en matrise som er lagret i en fil Du vil hente verdien på rad r, kolonne c Matrisen har m rader (dette må du vite på forhånd; det står ikke i filen) Du må altså hoppe over r-1 kolonner med m celler i hver

Tankegang Må formulere løsningen på problemet vårt på datamaskinens vilkår Prøv å sett dere i maskinens plass... Maskinen kan bare gjøre én operasjon av gangen, på opptil to verdier: Addisjon, subtraksjon, multiplikasjon, divisjon Øke/senke verdien av et tall Sammenligne to tall og se hvilket som er størst Hoppe til et annet sted i koden basert på resultatet av en sammenligning (if/else, for, while) ...men den kan huske på mange tall (minnet), inkludert en lang liste med instruksjoner (programkoden vår)!

Manuell matriseaddisjon Hvorfor lage dette når det er innebygd i Matlab? God programmeringstrening ...men finn aldri opp hjulet på nytt i en jobbsituasjon Regler for matriseaddisjon: To matriser A og B kan adderes hvis de er like store Resultatmatrisen C får samme størrelse Hvert element i C er summen av de tilsvarende elementene i A og B (gjør det for hånd først)

Manuell matriseaddisjon Hva må funksjonen gjøre? Ta inn to matriser A og B som parametre Kontrollere at A og B er like store (og avslutte hvis ikke) Opprette resultatmatrisen C som nullmatrise "Hvert element i C er summen av de tilsvarende elementene i A og B" - ikke presist nok! Hvordan angir man et element i en matrise? Element C(i, j) skal settes til A(i, j) + B(i, j) Dette skal gjøres for alle elementene -> vi trenger to løkker, én for hver variabel!

Manuell matrisemultiplikasjon Regler for matrisemultiplikasjon : To matriser A og B kan multipliseres hvis A har like mange kolonner som B har rader Resultatmatrisen C får like mange rader som A og kolonner som B Hvert element i C er prikkproduktet av tilsvarende rad fra A og tilsvarende kolonne fra B ...dvs.: multipliser første element fra tilsvarende rad i A med første element fra tilsvarende kolonne i B osv., og summer alle produktene Illustrasjon

Løsing av ligningssett A x = b A er koeffisientene, x er de ukjente, b er konstantene Ganske enkelt hvis nedre venstre halvpart av A bare inneholder nuller: Matlab løser dette for oss med x = A \ b

Triksing med løkker (Sjakkbrett-trekk, fortran)

Sortering

Boblesortering I hvert "pass" blir det største tallet på veien trukket helt opp mot høyre Det nest største osv. vet vi ingenting om, for det blir "satt igjen" når det møter det største

Kamsortering

Flettesortering (merge sort) Bruker rekursjon, dvs. at en funksjon kaller seg selv TODO: Er dette pensum? Quicksort er lettere å implementere. Vis evt. rekursiv selection sort først

Funksjonspekere f = @(x) sin(x); Hva trenger vi dette til? f blir en peker til, eller et alias for, sin f(2) vil da oppføre seg som om det hadde stått sin(2) @(x) betyr "jeg ønsker å lage en peker til en funksjon som tar ett parameter, som vi kaller for x" Hva trenger vi dette til? Sende funksjoner som parametre til andre funksjoner (hjelp...) F.eks. en deriverings- eller integreringsfunksjon Eller en sorteringsfunksjon (hvordan skal elementene sammenlignes?)

Filer

Databaser / SQL?