www.elektronik.si
Matlab naloga

www.elektronik.si -> Naloge, izpiti, seminarske

Avtor: faznpriferKraj: Celje PrispevekObjavljeno: Tor Maj 23, 2017 2:16 pm    Naslov sporoŔila:  Matlab naloga
----------------------------------------------------------------------------
Pripravljam se na izpit in ker mi for zanke ┬╣e niso ├Ęisto jasne imam te┬żavo s slede├Ęo nalogo:

Generirajte matriki A in B:

A=[3,2,6,8,
9,7,4,1]

B=[4,1,3,5,
2,3,1,6]

├łe je element v matriki A ve├Ęji od 3 mu pri┬╣tejte istole┬żni element iz matrike B.


Poskusil sem z IF stavki, vendar nekako moram uporabit tudi FOR zanko, ├Ęe se ne motim, ker ko je eden pogoj izpolnjen (┬╣tevilo je ve├Ęje od 3) in mi ga nato se┬╣teje z istole┬żnim ┬╣tevilom iz druge matrike in izpi┬╣e, se program ustavi in ne preveri ┬╣e ostalih ┬╣tevil.


To sem sedaj posku┬╣al, upam da merim v pravo smer:

Koda:
A=[3,2,6,8;9,7,4,1]
B=[4,1,3,5;2,3,1,6]

for x=1:8
if A(1)>3
    a=A(1)+B(1)
    disp(a)
   
elseif A(2)>3
    b=A(2)+B(2)
    disp(b)

   
elseif A(3)>3
    c=A(3)+B(3)
    disp(c)


elseif A(4)>3
    d=A(4)+B(4)
    disp(d)
   
elseif A(5)>3
    e=A(5)+B(5)
    disp(e)
   
elseif A(6)>3
    f=A(6)+B(6)
    disp(f)
   
elseif A(7)>3
    g=A(7)+B(7)
    disp(g)
   
elseif A(8)>3
    h=A(8)+B(8)
    disp(h)
   
end
end


Hvala za pomo├Ę !

Avtor: darkobKraj: Ljubljana PrispevekObjavljeno: Tor Maj 23, 2017 2:29 pm    Naslov sporoŔila:  
----------------------------------------------------------------------------
Se ne da v FOR zanki spreminjati spremenljivko x od 1 do 8, ter potem narediti IF stavek za element matrike A na poziciji x?

To, da ima┬╣ 8 IF stavkov za 8 elementov je zagotovo slaba re┬╣itev. Kaj, ├Ęe bi bila naloga za 100 elementov? Ali 1000? Ali 1000000?

Avtor: mosqito PrispevekObjavljeno: Tor Maj 23, 2017 9:44 pm    Naslov sporoŔila:  
----------------------------------------------------------------------------
Ne rabi┬╣ niti for zanke. V matlabu (ali octave, kar sam najve├Ę uporabljam) lahko naredi┬╣ matriko kar s primerjavo. Rezultat bo matrika z 1 in 0 glede na rezultat pogoja.

se pravi, da pogleda┬╣ kaj je v A ve├Ęje od 3:

vecjeodtri = A>3

potem pa po elementih zmno┬żi┬╣ in pri┬╣teje┬╣, nekako takole:

novaA = A .+ vecjeodtri .* B


Koda:
octave:1> A=[3,2,6,8,9,7,4,1]
A =

   3   2   6   8   9   7   4   1

octave:2> B=[4,1,3,5, 2,3,1,6]
B =

   4   1   3   5   2   3   1   6

octave:3> vecjeodtri = A>3
vecjeodtri =

   0   0   1   1   1   1   1   0

octave:4> novaA = A .+ vecjeodtri .* B
novaA =

    3    2    9   13   11   10    5    1


Ima┬╣ kar online...
https://octave-online.net/

Avtor: mosqito PrispevekObjavljeno: Tor Maj 23, 2017 9:51 pm    Naslov sporoŔila:  
----------------------------------------------------------------------------
Aja, poglej si "pointwise" operacije na matrikah predvsem. To je zelo mo├Ęno ordje. ├łe dela┬╣ z nekimi for in podobnim, si zgre┬╣il bistvo uporabe ML/Octave. Predstavljaj si, da je matrika dolga ne 8 ampak 8M ┬╣tevil. A bo┬╣ potem 8 milijonov if vrstic pisal ha ha ha ?

Avtor: faznpriferKraj: Celje PrispevekObjavljeno: Sre Maj 24, 2017 9:59 am    Naslov sporoŔila:  
----------------------------------------------------------------------------
Hvala mosqito za lepo razlago, vendar sem pozabil omenit, da se naloga nana┬╣a na for zanke, zato me zanima kako bi lahko to re┬╣il z for zanko.

Avtor: MarkoMKraj: Lovrenc na P. PrispevekObjavljeno: Sre Maj 24, 2017 10:52 am    Naslov sporoŔila:  
----------------------------------------------------------------------------
Koda:
for x=1:8
   if A(x)>3
       A(x)=A(x)+B(x);
   end
end

Tako?

Avtor: kastaneda PrispevekObjavljeno: Sre Maj 24, 2017 10:52 am    Naslov sporoŔila:  
----------------------------------------------------------------------------
Mogo├Ęe tako:

if A(x)>3
a=A(x)+B(x)

Avtor: faznpriferKraj: Celje PrispevekObjavljeno: Sre Maj 24, 2017 4:53 pm    Naslov sporoŔila:  
----------------------------------------------------------------------------
To├Ęno tako in ni├Ę druga├Ęe. Kako se zdi to enostavno ko vidim re┬╣itev. Very Happy Hvala za pomo├Ę, mogo├Ęe jo bom ┬╣e potreboval.

Avtor: faznpriferKraj: Celje PrispevekObjavljeno: ╚et Maj 25, 2017 3:10 pm    Naslov sporoŔila:  
----------------------------------------------------------------------------
┬ęe eno vpra┬╣anje. Kako iz mno┬żice vektorskih ┬╣tevil npr. [2 5 2 8 4 8 2 5], dobim podatek koliko je dvojk.

Avtor: darkobKraj: Ljubljana PrispevekObjavljeno: Pet Maj 26, 2017 10:52 am    Naslov sporoŔila:  
----------------------------------------------------------------------------
faznprifer je napisal/a:
┬ęe eno vpra┬╣anje. Kako iz mno┬żice vektorskih ┬╣tevil npr. [2 5 2 8 4 8 2 5], dobim podatek koliko je dvojk.


Npr:

A=[2,5,2,8,4,8,2,5];
B=0;
for x=1:8
if (A(x)==(2))
B=B+1;
endif
endfor
disp(B);

Avtor: MarkoMKraj: Lovrenc na P. PrispevekObjavljeno: Pet Maj 26, 2017 11:53 am    Naslov sporoŔila:  
----------------------------------------------------------------------------
Matlab je poln namenskih funkcij za manipulacijo vektorjev in matrik, for zanke upo├Ęasnijo delovanje. ├łe je le mo┬żno, uporabimo namenske funkcije.
Koda:
A=[2 5 2 8 4 8 2 5];
I = find(A == 2);
y=size(I);
y=y(:,2)

Stran 1 od 1

Powered by phpBB © 2001,2002 phpBB Group