Matlab

O matematiki, številih, množicah in računih...
Popotnik
Posts: 533
Joined: 12.11.2008 18:35

Re: Matlab

Post by Popotnik » 19.8.2013 21:03

Kaj ni vektor zgolj stolpec? Vodoravni vektor je pač transponiran vektor.

Ja dobr, toda kaj bi potem bil 1D fft pri matrikah?

User avatar
Aniviller
Posts: 7263
Joined: 15.11.2004 18:16

Re: Matlab

Post by Aniviller » 19.8.2013 21:26

No to sta samo dve predstavitvi iste stvari, saj tudi vsako mnozenje vektorja in matrike poves z leve ali z desne (Ax=b ali pa x'A'=b'). Stvar izbire. Standardno je dogovor, da so vektorji stolpci ampak po drugi strani pa noces v racunalnistvu takoj zaradi tega imet seznama seznamov [[a],,[c]] :)

Popotnik
Posts: 533
Joined: 12.11.2008 18:35

Re: Matlab

Post by Popotnik » 19.8.2013 21:59

Pa saj pri seznamu v računalništvu pač ni neke "smeri" ( :lol: )? Ima le indeks in toj to.

User avatar
Aniviller
Posts: 7263
Joined: 15.11.2004 18:16

Re: Matlab

Post by Aniviller » 19.8.2013 23:27

Ni tako enostavno. Seznam je ze seznam, ampak tukaj imas matrike. Ce imas matrike, sta dve standardni moznosti. Indeksa sta dva... lahko imas seznam seznamov (precej neucinkovito), in tukaj je sploh pomembno kateri indeks je prvi in kateri je drugi. V tej notaciji je razlika med
[[x,y,z]]
in
[[x],[y],[z]]
Druga moznost je v bistvu navidez ista, s tem da je to pac fizicno zlozeno v en seznam in potem racunas indeks=i*N+j (oziroma j*N+i; ce delas rocno si to izberes, notranja reprezentacija je pa odvisna od knjiznice/programskega jezika). To je ta varianta
[x,y,z]
oziroma
[x;y;z]
kjer je pac v prvem primeru N=1, v drugem pa N=3.

Ko zapisujes vektorje je odvisno, ali vektor predstavis kot matriko in vleces za seboj dodaten brezvezen indeks, ki ima samo eno vrednost, ali pa imas opravka z enojnim seznamom. Drugi nacin je seveda bolj prakticen (vektor kot vektor) in tukaj res "ni smeri", in potem iz konteksta uganes kaj je misljeno (ni tako tezko, vektor*vektor pac predpostavis da gre za skalarni produkt in bi v matricnem zapisu bil prvi transponiran, podobno za matrika*vektor in vektor*matrika). To deluje brez problema ce je eksplicitno jasno kaj je vektor in kaj je matrika (ce imajo objekti tip in je vektor ocitno druga stvar kot matrika). Ce je pa vse matrika (kot pri matlabu), je pa to problem - matlabov vektor mora vedet ali je transponiran ali ne, ker je spravljen kot matrika (ceprav ni eksplicitno notranje spravljen kot seznam seznamov ampak "raztegnjen" seznam, se vedno ve kaksne oblike je). Marsikatera metoda ti bo takoj tezila da se dimenzije ne ujemajo, ce das transponiran vektor noter. Recimo A*B, ce je B=[1,2,3], A pa 3x3 matrika, ti ze tezi, da mnozis elemente ki se ne pokrijejo po dimenzijah. Glede tega je tale fft bolj izjema kot pravilo, ker ime poseben primer za transponirane vektorje (matrike velikosti 3x1).

Jeler
Posts: 6
Joined: 13.5.2013 11:49

Re: Matlab

Post by Jeler » 6.1.2014 1:14

Zdravo!
Imam za rešit eno nalogo v Matlabu:
Pri iskanju korenov nelinearnih enačb lahko uporabimo tudi Stephensonovo metodo po sledečih formulah:
\(x_i_+_1=x_i - \frac{f(x_i)}{g(x_i)}\)

\(g(x_i)=\frac{f(x_i+f(x_i))-f(x_i)}{f(x_i)}\)
Poišči realen koren enačbe \((10-x)e^{-10}-x^{10}+1=0\) z natančnostjo \(10^{-14}\), ter preveri rezultat z napisanim programom za bisekcijsko metodo. Začetni približek poišči z grafično metodo.

Zanima me, če zna kdo to v celoti rešit, oziroma če je ta metoda podobna newtonovi metodi. Ker za to metodo jaz prvič slišim in zato tudi nimam pojma kako napisati program.

Hvala za odgovore.
Lp Jernej

User avatar
Aniviller
Posts: 7263
Joined: 15.11.2004 18:16

Re: Matlab

Post by Aniviller » 6.1.2014 1:20

Ja, zelo sorodna je Newtonovi, saj vidiš, da je g(x_i) samo diskretni približek odvoda. Sicer pa nimaš kaj drugega kot da prepišeš algoritem v kodo in poženeš. Saj to je že vse kar je. Ideja metode je, da je lahko f(x) precej uporaben približek za prilagodljiv korak diskretnega približka za odvod.

Jeler
Posts: 6
Joined: 13.5.2013 11:49

Re: Matlab

Post by Jeler » 7.1.2014 20:52

potem, če samo odvod zamenjam z enačbo za g(x_i) je to to? program ostane isti kot pr newtonovi metodi??

User avatar
Aniviller
Posts: 7263
Joined: 15.11.2004 18:16

Re: Matlab

Post by Aniviller » 7.1.2014 20:53

Tako ja.

mojih500
Posts: 44
Joined: 1.4.2008 23:48

Re: Matlab

Post by mojih500 » 10.1.2014 8:36

Zivijo,
imam sledece podatke:
_____90_____97
90 | 1.000 | 0.000
92 | 0.715 | 0.285
94 | 0.429 | 0.571
95 | 0.287 | 0.713
96 | 0.144 | 0.856
97 | 0.000 | 1.000

Iz podatkov je vidno, da moram dolociti koliksen mora biti delez vrednosti 90 in 97, da dobim povp vredost 92, 94, 95, 96.
Za vrstico 90 in 97 je logicno. Ce zelim imeti 90 mora biti delez pri 90 =1 in pri 97 =0. Ce zelim imeto 97, mora biti delez pri 90=0, pri 97=1.
Kaj pa za ostale stiri primere (krepko oznacene stevilke)?
Kaksna distribucija je to?
Kako bi ti sprogramirala v matlabu?

User avatar
Aniviller
Posts: 7263
Joined: 15.11.2004 18:16

Re: Matlab

Post by Aniviller » 10.1.2014 8:48

No to niti niso podatki, to je samo linearna interpolacija :)

Tudi če pojma nimaš, kako to naredit, si v eni vrstici tam. Če hočeš iz a in b namešat c (recimo iz 90 in 97 namešat 92), potem recimo označiš neznani delež b-ja z x, in velja
a*(1-x)+b*x=c
od koder
\(x=\frac{c-a}{b-a}\)
Po domače, to je kar delež razdalje med skrajnima vrednostima, recimo 92 je na 2/7 poti med 90 in 97, torej \(x=\frac{2}{7}\approx 0.2857\). Na isti način iz tabelirane funkcije dobiš približno funkcijo za neko vmesno vrednost, ki je ni točno v tabeli - dobiš delež poti med sosednjima vrednostima, in v istem razmerju namešaš rezultata.

mojih500
Posts: 44
Joined: 1.4.2008 23:48

Re: Matlab

Post by mojih500 » 10.1.2014 9:04

Hvala za razlago :)

DirectX11
Posts: 411
Joined: 22.10.2008 14:50

Re: Matlab

Post by DirectX11 » 13.6.2014 13:32

Pozdravljeni,

zanima me zakaj v matlabu ko uporabim fft funkcijo na poljubno dolgih .mp3 datotekah vedno dobim toliko dolg fft signal kot je sama datoteka. Ali ni tako da fourierjeva transformacija slika v frekvenčni prostor. Kar pomeni da bi morale biti frekvence na x osi, in vse enako dolge. Saj je slišno območje med 20 Hz in 20kHz. Več ali manj ne gre.

Hvala za pomoč.

Post Reply