opgaver:Uge2

From Eksperimentel Fysik WIKI
(Difference between revisions)
Jump to: navigation, search
m ("MATLAB® Primer" (tidligere kaldet "Getting Started with MATLAB"))
 
(7 intermediate revisions by one user not shown)
Line 14: Line 14:
 
Overvej, hvordan data bedst kan præsenteres. Skal de skaleres, rebinnes, skal nogle af data smides væk, eller transformeres på anden måde? Lav en serie figurer.
 
Overvej, hvordan data bedst kan præsenteres. Skal de skaleres, rebinnes, skal nogle af data smides væk, eller transformeres på anden måde? Lav en serie figurer.
  
Start gerne med at arbejde med temperatur versus spænding for datasæt nummer 97, da det er det sjoveste.
+
Start gerne med at arbejde med temperatur versus spænding for datasæt nummer 97, da det er det sjoveste. Temperaturen er i kolonne nummer 4, mens spændingen er i kolonne 9.
 
{{hidden begin|toggle=right|title=Hint|titlestyle=background:#ccccff|bg2=#eeeeee}}
 
{{hidden begin|toggle=right|title=Hint|titlestyle=background:#ccccff|bg2=#eeeeee}}
 
Brug dataindlæsnings-metoden som er vist i den vedlagte <code>.m</code>-fil til at indlæse dine data. Husk at pakke datafilerne ud i den mappe som du kører MATLAB i - ellers kan programmet jo ikke finde ud af hvor de ligger.
 
Brug dataindlæsnings-metoden som er vist i den vedlagte <code>.m</code>-fil til at indlæse dine data. Husk at pakke datafilerne ud i den mappe som du kører MATLAB i - ellers kan programmet jo ikke finde ud af hvor de ligger.
  
For hjælp til at plotte, kig i kapitel 4 i ''Getting Started with MATLAB'' bogen, der ligger på Absalon.
+
For hjælp til at plotte, kig i kapitel 4 i "MATLAB® Primer" (tidligere kaldet "Getting Started with MATLAB") bogen, der ligger på Absalon.
  
 
Start med at arbejde med datasæt nummer 97, og plot temperatur versus spænding. Er der nogle punkter der ligger underligt? Prøv at se om du kan fjerne disse fra datasættet.
 
Start med at arbejde med datasæt nummer 97, og plot temperatur versus spænding. Er der nogle punkter der ligger underligt? Prøv at se om du kan fjerne disse fra datasættet.
Line 40: Line 40:
 
::<code>    [0.4 0.4 0.8],'MarkerEdgeColor',[0.4 0.4 0.8] )</code>
 
::<code>    [0.4 0.4 0.8],'MarkerEdgeColor',[0.4 0.4 0.8] )</code>
 
:<code>title('Originale data','FontWeight','b','FontSize',12)</code>
 
:<code>title('Originale data','FontWeight','b','FontSize',12)</code>
:<code>xlabel('Temperatur','FontSize',12)</code>
+
:<code>xlabel('Temperatur [K]','FontSize',12)</code>
:<code>ylabel('Spænding','FontSize',12)</code>
+
:<code>ylabel('Spænding [V]','FontSize',12)</code>
 
:<code>axis([0 4.2 9.45e-7 9.8e-7])</code>
 
:<code>axis([0 4.2 9.45e-7 9.8e-7])</code>
  
Line 47: Line 47:
  
 
Man kan nu se lidt nærmere på figuren, og se at der er nogle punkter der ligger underligt i forhold til alle de andre - f.eks. langt under kurven i den venstre del af figuren. Disse punkter er fejlmålinger, og dem vil man gerne have væk fra sit datasæt.  
 
Man kan nu se lidt nærmere på figuren, og se at der er nogle punkter der ligger underligt i forhold til alle de andre - f.eks. langt under kurven i den venstre del af figuren. Disse punkter er fejlmålinger, og dem vil man gerne have væk fra sit datasæt.  
[[File:uge2fig2.png|frame|Der er brug for en ny counter til at gemme punkterne, da det nye array ikke skal have tomme linier.]]
+
[[File:uge2fig2.png|frame|Der er brug for en ny counter til at gemme punkterne, da det nye array ikke skal have tomme linjer.]]
 
Den nemmeste måde at fjerne fejlpunkter på, er ved at sætte nogle grænser for hvor man tillader data at være - og så loope igennem alle datapunkter og kun gemme dem der overholder reglerne. F.eks. kan man fjerne nogle af fejlpunkterne med koden
 
Den nemmeste måde at fjerne fejlpunkter på, er ved at sætte nogle grænser for hvor man tillader data at være - og så loope igennem alle datapunkter og kun gemme dem der overholder reglerne. F.eks. kan man fjerne nogle af fejlpunkterne med koden
  
Line 69: Line 69:
 
Denne kode laver en counter <code>k</code> der tæller hvor mange punkter der er blevet "godkendt" som gode data. Den tjekker nu for hvert datapunkt, <code>n</code>, om den overholder kriterierne, og hvis den gør gemmes punktet i det nye data-array <code>DataCorrected</code>. Hvis punktet ikke overholder kriterierne, bliver det ikke gemt.
 
Denne kode laver en counter <code>k</code> der tæller hvor mange punkter der er blevet "godkendt" som gode data. Den tjekker nu for hvert datapunkt, <code>n</code>, om den overholder kriterierne, og hvis den gør gemmes punktet i det nye data-array <code>DataCorrected</code>. Hvis punktet ikke overholder kriterierne, bliver det ikke gemt.
  
For at data skal være nemmere at overskue, kan man også binne dem - altså samle et antal punkter sammen til ét. For at kunne binne data er man først og fremmest nødt til at sortere det i en rækkefølge så punkterne ligger efter hinanden stigende på førstaksen. Dette gøres med
+
Man kan også lave denne sortering vha. logiske variable i MATLAB, ved brug af koden
 +
 
 +
:<code>LOGIC1 = Data0097(:,4) < 1.5;</code>
 +
:<code>LOGIC2 = Data0097(:,9) > 9.64*10^(-7);</code>
 +
:<code>LOGIC3 = Data0097(:,9) < 9.85*10^(-7);</code>
 +
:<code>LOGIC4 = Data0097(:,4) >= 1.5;</code>
 +
:<code>LOGIC5 = LOGIC1 + LOGIC2 + LOGIC3 == 3;</code>
 +
:<code>LOGIC = LOGIC5 + LOGIC4 > 0;</code>
 +
:<code>DataCorrected = NaN(length(Data0097(LOGIC,9)),2);</code>
 +
:<code>DataCorrected(:,2) = Data0097(LOGIC,9);</code>
 +
:<code>DataCorrected(:,1) = Data0097(LOGIC,4);</code>
 +
 
 +
Denne kode laver boolean arrays (lister af <code>true</code> og <code>false</code> værdier, skrevet ud som 0'er og 1'ere hvis man skriver dem ud) for hvorvidt udtrykkene er sande eller ej. Disse udtryk kombineres så til nye boolean arrays, der til sidst bruges for at få de ønskede data ud af originaldataen.
 +
 
 +
Andre dele af data der kan ses på: For datasæt 12, 13 og 14 er det interessant at se på magnetfelt (kolonne 2) versus spænding (kolonne 9) og magnetfelt versus magnetiseringen (de udregnes ud fra den givne formel, $\tau = MB$, og at $\tau$ antages at være proportional med spændingen).
 +
{{hidden end}}
 +
 
 +
=== Spørgsmål b ===
 +
Overvej hvordan man kan udlede den indre støj på de målte data. Antag at der ikke er systematiske fejl, og tilføj dette til figurerne.
 +
{{hidden begin|toggle=right|title=Hint|titlestyle=background:#ccccff|bg2=#eeeeee}}
 +
Se igen på temperatur versus spænding for datasæt 97 - der er rigtig meget støj, kan du gøre noget ved dette?
 +
{{hidden end}}
 +
{{hidden begin|toggle=right|title=Løsning|titlestyle=background:#ccccff|bg2=#eeeeee}}
 +
For at fjerne den indre støj i dataen kan man binne den - altså samle et antal punkter sammen til ét. For at kunne binne data er man først og fremmest nødt til at sortere det i en rækkefølge så punkterne ligger efter hinanden stigende på førstaksen. Dette gøres med koden (igen arbejdes der med temperatur versus spænding for datasæt 97, nu det korrigerede datasæt, som forklaret i løsningen til spørgsmål a)
  
 
:<code>DataCorrectedSorted = sortrows(DataCorrected);</code>
 
:<code>DataCorrectedSorted = sortrows(DataCorrected);</code>
Line 100: Line 123:
 
:<code>title(['Korrigeret data (bin = ' num2str(bin) ')'],'FontWeight','b', ...</code>
 
:<code>title(['Korrigeret data (bin = ' num2str(bin) ')'],'FontWeight','b', ...</code>
 
::<code>      'FontSize',12)</code>
 
::<code>      'FontSize',12)</code>
:<code>xlabel('Temperatur','FontSize',12)</code>
+
:<code>xlabel('Temperatur [K]','FontSize',12)</code>
:<code>ylabel('Spænding','FontSize',12)</code>
+
:<code>ylabel('Spænding [V]','FontSize',12)</code>
 
:<code>axis([0 4.2 9.45e-7 9.8e-7])</code>
 
:<code>axis([0 4.2 9.45e-7 9.8e-7])</code>
  
Line 107: Line 130:
 
{{hidden end}}
 
{{hidden end}}
  
=== Spørgsmål b ===
+
=== Spørgsmål c ===
Overvej hvordan man kan udlede den indre støj på de målte data. Antag at der ikke er systematiske fejl, og tilføj dette til figurerne.
+
Overvej en fortolkning af data.
{{hidden begin|toggle=right|title=Hint|titlestyle=background:#ccccff|bg2=#eeeeee}}
+
<!--{{hidden begin|toggle=right|title=Løsning|titlestyle=background:#ccccff|bg2=#eeeeee}}
  
{{hidden end}}
+
{{hidden end}}-->
{{hidden begin|toggle=right|title=Løsning|titlestyle=background:#ccccff|bg2=#eeeeee}}
+
  
{{hidden end}}
 
  
=== Spørgsmål c ===
 
Overvej en fortolkning af data.
 
{{hidden begin|toggle=right|title=Hint|titlestyle=background:#ccccff|bg2=#eeeeee}}
 
  
{{hidden end}}
+
== Samlede løsninger ==
{{hidden begin|toggle=right|title=Løsning|titlestyle=background:#ccccff|bg2=#eeeeee}}
+
* Et samlet dokument med MATLAB kode til at løse alle opgaverne ovenfor kan hentes her: [[Media:opgaver_uge2_sara.m|opgaver_uge2_sara.m]]
 
+
{{hidden end}}
+

Latest revision as of 17:09, 21 April 2014

Denne uge er der kun en enkelt opgave. I bliver givet nogle data, som I så skal arbejde med. Når I er færdige med nedenstående spørgsmål anbefales det at I leger lidt videre med data, for at vænne jer til at arbejde med større datasæt i MATLAB. I kan også prøve at indlæse nogle af jeres egne data (I har da gemt data fra jeres tidligere kurser, ikke?).


Contents

Opgave 1 - Saras data

Vi skal her arbejde med ægte data, fra Sara Eisenhardts speciale, 2010. Eksperimentet var måling af det magnetiske moment af en prøve af stoffet LiHoF4, som kun er magnetisk ved temperaturer under 1.5 K. Det er jeres opgave at analysere Saras data og producere et godt plot.

Magnetiseringen blev målt med et kraftmoment-magnetometer, en opstilling helt analog til jeres vægt-vippe opstilling. Magnetiseringen i et påtrykt felt giver anledning til et kraftmoment på prøven, $\tau = M B$. Dette giver anledning til en bøjning af en vippe, som igen forårsager ændring af modstanden i en strain gauge. Denne måles som spænding over en Wheatstonebro med en lock-in forstærker.

I dataserierne er bl.a. angivet målt spænding og påtrykt $B$-felt som en tidsserie, der er samplet ofte. Resten er ikke vigtigt her. Se den .m-fil der er vedlagt dataen for tips til hvordan data kan indlæses.

Spørgsmål a

Overvej, hvordan data bedst kan præsenteres. Skal de skaleres, rebinnes, skal nogle af data smides væk, eller transformeres på anden måde? Lav en serie figurer.

Start gerne med at arbejde med temperatur versus spænding for datasæt nummer 97, da det er det sjoveste. Temperaturen er i kolonne nummer 4, mens spændingen er i kolonne 9.

Spørgsmål b

Overvej hvordan man kan udlede den indre støj på de målte data. Antag at der ikke er systematiske fejl, og tilføj dette til figurerne.

Spørgsmål c

Overvej en fortolkning af data.


Samlede løsninger

  • Et samlet dokument med MATLAB kode til at løse alle opgaverne ovenfor kan hentes her: opgaver_uge2_sara.m


Personal tools
Namespaces
Variants
Actions
Navigation
Opgaver
Andet
Toolbox
Commercial