Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: muu kieli: Matlab: tiedon luku ja yhtälöön sijoittaminen

Ämppi [07.08.2012 15:09:56]

#

Yrityksistä huolimatta en ole löytänyt menetelmää tehdä mitä haluaisin. Uskon kuitenkin että Matlabilla olisi mahdollista tehdä tällainen operaatio.

Minulla on siis dataa:

N=[
75720.000; % 75311
80508.877; % 80231
80015.000; % 80322
82474.806; % 82322

E=[
31830.000; % 75311
23102.566; % 80231
32982.000; % 80322
32060.167; % 82322

Ja minä haluaisin sijoittaa rivi kerrallaan luvut seuraavaan yhtälöön:

A=[
a,b*N,c*E,d*N^2,e*N*E,f*E^2;
a,b*N,c*E,d*N^2,e*N*E,f*E^2;
a,b*N,c*E,d*N^2,e*N*E,f*E^2;
a,b*N,c*E,d*N^2,e*N*E,f*E^2;]

Lyhyesti, kyseessä on siis sama yhtälö joka toistuu joka rivillä. Että mites tällainen tehdään Matlabissa?

Epsilon [07.08.2012 17:11:12]

#

Jos ymmärsin oikein, niin haluat N-vektorin ensimmäisen alkion yhtälömatriisissa esiintyvän N:n tilalle ensimmäisellä rivillä toisen alkion toisella rivillä jne. ja vastaavasti E:n suhteen? Eli lopputulokseksi toivot esimerkkitapauksessasi 4x5-kokoista matriisia? Ja ilmeisesti muuttujat a, b, c, d, e, f ovat skalaareita?

Jos nuo oletukset pitävät paikkaansa, niin tällöin homma pitäisi toimia seuraavasti:

A = [a*ones(size(N)), b*N, c*E, d*N.^2, e*N.*E, f*E.^2];

Tuossa siis jokainen A:n sarake asetetaan erikseen vierekkäin (pilkulla asiat saa vierekkäin, puolipisteellä allekkain). Ensimmäinen sarake on a*1 eli vakio a:ta täynnä. Tuossa ones(size(N)) tekee N:n kokoisen matriisin (tai tässä tapauksessa sarakevektorin) ykkösiä. Operaattoreissa (potenssiin korotus ja kertolasku) piste operaattorin edessä kertoo sen, että operaatio suoritetaan (keskenään saman kokoisille) matriiseille alkioittain.

Jos kuitenkin tavoitteesi oli toistaa täsmälleen samaa riviä matriisissa useamman kerran (samoilla muuttujan arvoilla), niin tällöin kannattaa tutustua esimerkiksi komentoon repmat.

Edit: korjattu pari typoa

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta