vilse i octave, data till ekvation
Postat: 09 jul 2009, 11:42
Hej
Satt och pillade lite med NTC motstånd, en underhållande detalj är att dessa är olinjära i sin natur.
Hur som helst, tillverkarna av ntc motstånd ger ofta en datamängd som i praktiken berättar att vid den här temperaturen har vi detta motstånd.
Men eftersom tabeller är lite småtråkiga så har jag tidigare stoppat in utvalda data in i min miniräknare (en TI-89),
och sedan låtit den göra en approximation på vilken ekvation som passa bäst mot denna datamängd.
Och sedan kontrollerat detta genom att både rita upp datapunkterna och ekvationen, så man enkelt kan se om det stämmer eller inte.
(Det beror mycket på vilken data, om den är linjär eller olinjär osv osv)
Denna gången fick jag dock en liten undran om man inte kan använda octave (som verkar bra häftigt) att göra detta åt mig istället?
Så jag har börjat med att installera QtOctave (och en massa paket som heter octave-XXX),
och sedan klipp och klistrat in data in i en tabell vilket kan återskapas med.
I ntcC lagrar jag grader Celcius och i ntcR den resistans som ntc motståndet har vi denna temperatur (dessa värden kommer direkt från databladet)
och sedan kan jag rita upp datamängden med t.ex.
Vilket ger mig detta fina diagram
Men sedan börjar det roliga, hur gör jag för att octave ska titta på datan och göra en "exponential regression", "linear regression" m.fl. ?
(och skapar ett nytt diagram baserat på den skapade ekvationen?)
/Johan
Satt och pillade lite med NTC motstånd, en underhållande detalj är att dessa är olinjära i sin natur.
Hur som helst, tillverkarna av ntc motstånd ger ofta en datamängd som i praktiken berättar att vid den här temperaturen har vi detta motstånd.
Men eftersom tabeller är lite småtråkiga så har jag tidigare stoppat in utvalda data in i min miniräknare (en TI-89),
och sedan låtit den göra en approximation på vilken ekvation som passa bäst mot denna datamängd.
Och sedan kontrollerat detta genom att både rita upp datapunkterna och ekvationen, så man enkelt kan se om det stämmer eller inte.
(Det beror mycket på vilken data, om den är linjär eller olinjär osv osv)
Denna gången fick jag dock en liten undran om man inte kan använda octave (som verkar bra häftigt) att göra detta åt mig istället?
Så jag har börjat med att installera QtOctave (och en massa paket som heter octave-XXX),
och sedan klipp och klistrat in data in i en tabell vilket kan återskapas med.
Kod: Markera allt
ntcC=[0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21; 22; 23; 24; 25; 26; 27; 28; 29; 30; 31; 32; 33; 34; 35; 36; 37; 38; 39; 40; 41; 42; 43; 44; 45; 46; 47; 48; 49; 50; ]
ntcR=[28380; 27130; 25940; 24810; 23740; 22720; 21750; 20830; 19950; 19120; 18320; 17570; 16840; 16160; 15500; 14880; 14280; 13710; 13170; 12650; 12160; 11690; 11240; 10810; 10390; 10000; 9623; 9263; 8918; 8588; 8272; 7970; 7680; 7402; 7136; 6881; 6636; 6402; 6177; 5961; 5754; 5555; 5365; 5182; 5006; 4837; 4674; 4518; 4368; 4224; 4085; ]
och sedan kan jag rita upp datamängden med t.ex.
Kod: Markera allt
plot(ntcC,ntcR)
bar(ntcC,ntcR)
print -dpng '~/ntc_raw.png'
(och skapar ett nytt diagram baserat på den skapade ekvationen?)
/Johan