Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
! 04. 11. 2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
17. 01. 2016 (Jel.) Rok 2016 s novými a novějšími krystaly od kolegy Pavla!
17. 01. 2016 (Jel.) Nabídka knih z oborů matematiky, fyziky, chemie
23. 10. 2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 08. 02. 2017 21:28 — Editoval Pritt (08. 02. 2017 21:30)

Pritt
Příspěvky: 324
Pozice: student
Reputace:   17 
 

MATLAB - rychlý dotaz

Zdravím,
potřeboval poradit ohledně syntaxe v MATLABu.

Řeším rovnici

Code:

solve(eqn, A, B)

, kde A, B jsou vektory proměnných.

Teď mám problém s tím, že nemohu dostat výsledek do formy vektoru.

Pokud napíšu

Code:

S = solve(eqn, A, B)

dostanu S jako strukturu. Nevím (za nic nemůžu najít), jak převést strukturu, respektive její pole do jednoho vektoru.

Další možnost je

Code:

[a1,a2,...an,b1,b2,...bm] = solve(eqn, A, B)

A = [a1,...,an]
B = [b1,...bn]
Takto bych už dostal vektor, ale jde o to, že předem nevím,jaký bude rozměr A, B.

Zápis

Code:

AB = cat(2, A, B); 
AB = solve(eqn, A, B);

bohužel není platný.

Potřeboval bych jen poradit, jak poslední rovnost správně zapsat, protože to nemůžu nikde najít..

Díky moc.

Offline

  • (téma jako vyřešené označil(a) Pritt)

#2 09. 02. 2017 09:43 — Editoval ViliX (09. 02. 2017 09:52)

ViliX
Místo: Praha
Příspěvky: 191
Škola: MFF
Pozice: student
Reputace:   11 
Web
 

Re: MATLAB - rychlý dotaz

Volání té metody solve je v pohodě. Zkusil jsi však struct2cell? (https://www.mathworks.com/help/matlab/r … 2cell.html)
Další možností by bylo napsat si vlastní metodu ve které by byl nějaký for cyklus, který by jen tahal data z té struktury do pole.
Ten tvůj poslední zápis mi připadá docela dobrý a upřímně nevím kde je na něm chyba. Zkus však použít horzcat() místo cat() - to zajistí že se ty vektory poskládají za sebe. (https://www.mathworks.com/help/matlab/ref/horzcat.html)

Offline

 

#3 09. 02. 2017 10:00 — Editoval Pritt (09. 02. 2017 10:02)

Pritt
Příspěvky: 324
Pozice: student
Reputace:   17 
 

Re: MATLAB - rychlý dotaz

↑ ViliX:

Napsal jsem to trochu nepřesně, poslední zápis vrací AB jako strukturu. Já bych potřeboval, aby se do složek AB uložily po řadě řešení z té rovnice a dostal jsem vektor.

Vlastní funkci jsem zkoušel napsat, ale zase jsem narazil na problém, že abych mohl tahat data z té struktury, musím je tahat pomocí nějaké proměnné n, což je vektor názvů proměnných, což jsou složky AB:
S.n je n-té pole ty struktury, ale n musí být string, a to je problém.

Offline

 

#4 09. 02. 2017 10:16 — Editoval ViliX (09. 02. 2017 10:21)

ViliX
Místo: Praha
Příspěvky: 191
Škola: MFF
Pozice: student
Reputace:   11 
Web
 

Re: MATLAB - rychlý dotaz

A jak tedy vypadá ta struktura? Pokud je součástí struktury S vektor v, pak lze n-tý prvek toho vektoru získat S.v(n)

Offline

 

#5 09. 02. 2017 11:17 — Editoval Pritt (09. 02. 2017 11:19)

Pritt
Příspěvky: 324
Pozice: student
Reputace:   17 
 

Re: MATLAB - rychlý dotaz

Struktura S vypadá následovně:
Je 1x1, S(1) = S = a1,a2,....,an,b1,b2,....,bm

S.a1
S.a2
.
.
.
S.an
S.b1
S.b2
.
.
.
S.bm

Každý z výrazů S.ai, nebo S.bi je skalár, má konkrétní číselnou hodnotu.

Cíl je dostat vektor v = (S.a1, .... , S.an, S.b1, .... , S.bm)

Offline

 

#6 09. 02. 2017 13:24

ViliX
Místo: Praha
Příspěvky: 191
Škola: MFF
Pozice: student
Reputace:   11 
Web
 

Re: MATLAB - rychlý dotaz

A neslouží k tomu právě to (již zmíněné) struct2cell? Dle dokumentace by to mělo poskládat ty hodnoty do vektoru.

Offline

 

#7 09. 02. 2017 15:15 — Editoval Pritt (09. 02. 2017 15:44)

Pritt
Příspěvky: 324
Pozice: student
Reputace:   17 
 

Re: MATLAB - rychlý dotaz

↑ ViliX:

Tak jsem to zkusil a vypadá to nadějně.

při použití:

Code:

C = struct2cell(AB);
C = double(subs(C));

dostávám opravdu vektor požadovaných hodnot.
nebo taky možnost :

Code:

C = struct2cell(AB);
C = vpa(C);

První možnost mi nefunguje, pokud jsou ve struktuře uloženy symbolické hodnoty, druhá možnost připouští i symboly.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson