matlab slope problem / kulmakerroin ongelma

Seuraa 
Viestejä45973
Liittynyt3.9.2015

Does anybody happen to know how can I (using matlab) get the exact slope of the line that I've drawn into a graph figure?

myös suomenkieliset vastaukset kelpaavat

Kommentit (5)

Vierailija
Bender
Does anybody happen to know how can I (using matlab) get the exact slope of the line that I've drawn into a graph figure?

Nopeimmin pääset, kun valitset kuvasta Tools ja sieltä Basic fitting, valitset Linear ja sen jälkeen Show equations ja sitten vielä määrittelet desimaalit.

Tarkoititko tätä?

Vierailija
beeta

Nopeimmin pääset, kun valitset kuvasta Tools ja sieltä Basic fitting, valitset Linear ja sen jälkeen Show equations ja sitten vielä määrittelet desimaalit.

Tarkoititko tätä?

En aivan. Piirrän virhesuoria aineistoon, jossa y-suuntaiset virherajat vaihtelevat, ja koska perusfittaus ei tunnu ainakaan helposti antavan järkeviä kuvia, teen suorat silmämääräisesti. Pitänee tyytyä hakemaan pisteet manuaalisesti kokeilemalla erilaisia suoria kuvaan komennolla plot(...).

Nimittäin jostain syystä katsottaessa viivan ominaisuuksia siinä ilmoitetaan alku- ja loppukoordinaatti, mutta ne eivät ole kuvan koordinaatistossa, vaan suhteessa koko kuvaan, jolloin oikeassa laidassa x=1 ja vasemma x=0.

No eiköhän tässä pärjäillä.

Vierailija
Bender
En aivan. Piirrän virhesuoria aineistoon, jossa y-suuntaiset virherajat vaihtelevat, ja koska perusfittaus ei tunnu ainakaan helposti antavan järkeviä kuvia, teen suorat silmämääräisesti.

Tässä sinulle koodia, talleta tuo vaikka pns.m tiedostoksi.

[code:2k41996f]
function [a,b,da,db]=pns(x,y)
%Pienimmän neliösumman menetelmä lineaariselle datalle.
%Suoran muoto: y=ax + b
%Palautus [a,b,da,db]
Y=y(:);
X=x(:);
H=[X ones(size(X))];
th_hat=H\Y;
Y_hat=H*th_hat;
M=length(Y);
n=length(th_hat);
sg_hat=(norm(Y-Y_hat).^2)/(M-n);
C_th=sghat*inv(H'*H);
m_th=sqrt(diag(C_th));
a=th_hat(1);
b=th_hat(2);
da=m_th(1);
db=m_th(2);
[/code:2k41996f]

Kyseessä siis pienimmän neliösumman menetelmä ja jos ei tule silloin järkevää tulosta, niin joudut toteamaan, että datasi vaan sukkaa. da ja db siis kertoimien virheet.

Toimii siis näin:

>> x=[1,2,3];
>> y=[1,2,3];
>> [a,b,da,db]=pns(x,y)
a =
1
b =
-7.2155e-016
da =
9.1551e-016
db =
1.9777e-015

[edit: ethän viitsisi pienentää avatartasi?]

Vierailija

Mathcad:issa saa käyrän derivaatan selville muistaakseni pelkästään laittamalla hiiren nuoli siihen koordinaatiston käyrän paikalle, jossa derivaatta halutaan. Tästähän oli kyse.

En tiedä, mihin uusimmat versiot Matlabista pystyvät.

Uusimmat

Suosituimmat