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
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
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 02. 04. 2013 09:43

SonGokussj4
Zelenáč
Příspěvky: 8
Škola: FSI VUTbr
Pozice: Student
Reputace:   
 

Matlab ~ substituce | index

Dobrý den, n00b here.

Pokud mám

Code:

M8f = M9f_max - T9f_max*R_2*sind(phi_8) - N9f_max*R_2*(1-cosd(phi_8));

kde "phi_8 = 0 : beta_8/50 : beta_8"
dostanu tedy fci, která má 50 různých hodnot po sobě rostoucí / klesající.

Rád bych dospěl k tomu, že budu mít:

Code:

M8f_max = M8f (substituce phi_8 = beta_8)
neboli:
M8f_max = M9f_max - T9f_max*R_2*sind(beta_8) - N9f_max*R_2*(1-cosd(beta_8));

Potřebuji udělat maximum ~ jednu hodnotu. Našel jsem fci SUBS ale nějak mi nefunguje...
psal jsem to:

Code:

 M8f_max = subs(M8f,phi_8,beta_8)

Ale to mi vrátí -naprosto stejné hodnoty- co M8f... Ale já potřebuji jen tu poslední.

Tak to řeším tím dlouhým zápisem bohužel. Netušil by prosím někdo?

Druhý problém,
když kreslím graf, mám ho složen z 9 intervalů a abych ho vyplnil barevně, je na to kód

Code:

N = length(x1p);
verts = [x1p(:), M1(:); x1p(:) zeros(N,1)];
q = (1:N-1)';
faces = [q, q+1, q+N+1, q+N];
p = patch('Faces', faces, 'Vertices', verts, 'FaceVertexCData', [M1(:); M1(:)], 'FaceColor', 'interp', 'EdgeColor', 'none');

N = length(x2p);
verts = [x2p(:), M2(:); x2p(:) zeros(N,1)];
q = (1:N-1)';
faces = [q, q+1, q+N+1, q+N];
p = patch('Faces', faces, 'Vertices', verts, 'FaceVertexCData', [M2(:); M2(:)], 'FaceColor', 'interp', 'EdgeColor', 'none');

A pokračuje to dál až do x9p M9

Prakticky jediné veličiny, které se v tomto (dle mého zbytečně mnohořádkovém) kódu mění jsou:
xip a Mi
nedá se to nějak udělat cyklem, že pro

Code:

for i = 1 : 9
N = length(xip);
verts = [xip(:), Mi(:); xip(:) zerost (N,1)];

Atd? Chápu, že by to fungovalo, kdybych měl místo Mi pojmenovanou hodnotu -jen- i.
Ale pokud mám v celém (už docela "velkém") programu dost hodnot pojmenovaných M9, které jsou ještě propojené s M9p a M9f, šlo by tato čísla "uvnitř názvu proměnné" charakterizovat proměnlivým číslem?

Děkuji za každou pomoc.

Offline

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

#2 03. 04. 2013 10:21

SonGokussj4
Zelenáč
Příspěvky: 8
Škola: FSI VUTbr
Pozice: Student
Reputace:   
 

Re: Matlab ~ substituce | index

Tak kamarád (IT) mi doporučil tuto syntaxi:

Code:

x = [x1p;x2p;x3p;x4p;x5p;x6p;x7p;x8p;x9p];
M = [M1;M2;M3;M4;M5;M6;M7;M8;M9]

for i = 1:length(x),
   N = length(x);
   verts = [x(i,:), M(i,:); x(i,:) zeros(N,1)];
   q = (1:N-1)';
   faces = [q, q+1, q+N+1, q+N];
   p = patch('Faces', faces, 'Vertices', verts, 'FaceVertexCData', [M(i,:); M1(i,:)], 'FaceColor', 'interp', 'EdgeColor', 'none');
end

Myslel jsem si i že by to mohlo jít, avšak sekli jsme se na jednom problému.

Pokud dám příkaz:

Code:

length(x)

Vrátí mi to hodnotu 51.
Pokud dám

Code:

i = 1 : length(x)

vrátí mi to hodnotu 1 2 3 4 .. 51

Jestliže ALE spustím tento příkaz, ztroskotá to na tom, že
face = 0
q = 0
verts = 0
N = 1

A pokud si dám i, tak mi taky ukáže, že i = 1.
Přitom čerpá v první kroku z

Code:

i = 1 : length(x1p)

což je právě 1 : 51, ale nevím proč vyjde i = 1... zde je kámen úrazu a netuším proč.

Offline

 

#3 13. 04. 2013 13:26 — Editoval SonGokussj4 (13. 04. 2013 13:28)

SonGokussj4
Zelenáč
Příspěvky: 8
Škola: FSI VUTbr
Pozice: Student
Reputace:   
 

Re: Matlab ~ substituce | index

Vyřešeno :-)
Pro ty, koho by to zajímalo.

Code:

xip = [x1p;x2p;x3p;x4p;x5p;x6p;x7p;x8p;x9p]; %vektor 9 x 1
Ni  = [N1;N2;N3;N4;N5;N6;N7;N8;N9]; %vektor 9 x 1

vel_int = size(xip); % hodí hodnotu 9 x 1
interval = vel_int(1); % vrátí hodnotu 9     

for i = 1 : 1 : interval %takže  1 2 3 4 5 6 7 8 9
    
    N = length(xip(i,:));
    verts = [xip(i,:)', Ni(i,:)'; xip(i,:)' zeros(N,1)];
    q = (1:N-1)';
    faces = [q, q+1, q+N+1, q+N];
    p = patch('Faces', faces, 'Vertices', verts, 'FaceVertexCData', ...
       [Ni(i,:)'; Ni(i,:)'], ...
              'FaceColor', 'interp', 'EdgeColor', 'none');
end

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson