Stran 2 od 2

Re: Matlab

Objavljeno: 19.8.2013 21:03
Napisal/-a Popotnik
Kaj ni vektor zgolj stolpec? Vodoravni vektor je pač transponiran vektor.

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

Re: Matlab

Objavljeno: 19.8.2013 21:26
Napisal/-a Aniviller
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]] :)

Re: Matlab

Objavljeno: 19.8.2013 21:59
Napisal/-a Popotnik
Pa saj pri seznamu v računalništvu pač ni neke "smeri" ( :lol: )? Ima le indeks in toj to.

Re: Matlab

Objavljeno: 19.8.2013 23:27
Napisal/-a Aniviller
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).

Re: Matlab

Objavljeno: 6.1.2014 1:14
Napisal/-a Jeler
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

Re: Matlab

Objavljeno: 6.1.2014 1:20
Napisal/-a Aniviller
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.

Re: Matlab

Objavljeno: 7.1.2014 20:52
Napisal/-a Jeler
potem, če samo odvod zamenjam z enačbo za g(x_i) je to to? program ostane isti kot pr newtonovi metodi??

Re: Matlab

Objavljeno: 7.1.2014 20:53
Napisal/-a Aniviller
Tako ja.

Re: Matlab

Objavljeno: 10.1.2014 8:36
Napisal/-a mojih500
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?

Re: Matlab

Objavljeno: 10.1.2014 8:48
Napisal/-a Aniviller
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.

Re: Matlab

Objavljeno: 10.1.2014 9:04
Napisal/-a mojih500
Hvala za razlago :)

Re: Matlab

Objavljeno: 13.6.2014 13:32
Napisal/-a DirectX11
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č.