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 30. 08. 2015 11:47

Hynda1
Příspěvky: 26
Reputace:   
 

Scilab/Matlab

Ahoj, potřebuju radu.

Mám cyklus:
for i=1:b
    x=2
     for j=1:a
        if ARAD(i,1)==ARTT(j,1)
            x=x+1
            Vysledek(i,1)=ARTT(j,1)
            Vysledek(i,x)=ARTT(j,2) //Vysledek= [ARCID, ATOT, TTOT1, TTOT2..]
        end
    end     
end

V matici ARAD v prvním sloupci jsou identifikátory a časy k nim Hledám stejné identifikátory v matici ARTT a pokud je najdu napíšu k danému identifikátoru k němu související čas(těch může být pro každý identifikátor několik). Pak tyto časy zapisuju do sloupečků takže v řádku mám v prvním sloupci identifikátor a pak ve sloupečcích zapsané časy.

Nicméně zapisuji nejdříve do sloupce 3(viz x=x+1) pak do 4. atd. Potřeboval bych ale abych první čas zapsal do třeba právě toho třetího ale jakmile najdu další čas tak tento poslední zapsat do třetího a předchozí přemístit do 4..Prostě aby se mi to plnilo a vždycky poslední hodnota byla načtena do 3 sloupce a ostatní se posouvali

Nějaký nápad jak to vyřešit?

Offline

 

#2 31. 08. 2015 10:14 — Editoval O.o (31. 08. 2015 10:20)

O.o
Veterán
Příspěvky: 1402
Reputace:   16 
 

Re: Scilab/Matlab

Ahoj,

snad jsem si to spravne precetl.

Mohl bys to pridavat nejakym takovymhle zpusobem:

Code:

tmp = size(Vysledek(i,:), 2);
if ( tmp > 3 )
  Vysledek(i, 3:tmp) = Vysledek(i, 4:tmp+1)
end
Vysledek(i,3) = NOVA HODNOTA;

No ideu z toho snad dostanes, snazil jsem se nepouzit nic co by se nedalo snadno rozpoznat i pro zacatecniky v matlabu. Fungovat to bude pouze pokud je tvoje matice na zacatku nezalozena (tj size ma nulovou), pokud jsi prealokoval treba nulovou matici dopredu, ktera ma size napriklad zeros(100, 100), tak to nebude fungovat protoze size se ti nebude zvetsovat dokud neprejdes 100 sloupec (to uz ovsem nema vliv na ten kod).

Pokud ji mas predem zaplnenou, tak tam vloz nejake hodnoty, ktere nemohou vyjit z toho, co tam vkladas a misto:

Code:

if (tmp > 3)

kontroluj, jestli je na tom miste tvoje defaultni hodnota nebo ne:

Code:

if (Vysledek(i, 3) ~= NEJAKA_MOJE_HODNOTA)
...

napriklad, kdyz zaplnis puvodni matici treba boolean FALSE, tak muzes kontrolovat, jestli je tam false, nebo jestli je tam cislo, cokoli se ti zlibi, pripadne ji muzes celou zaplnit nejakou nesmyslnou hodnotou, pro cas by sedela prakticky kterekoli zaporne cislo, atp..

Offline

 

#3 01. 09. 2015 12:14

Hynda1
Příspěvky: 26
Reputace:   
 

Re: Scilab/Matlab

↑ O.o:
Diky za pomoc, hned jak mi bude lepe vyzkousim a napisu jak to funguje. Jeste jednou moc diky

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson