Front-end Front-end
Probíhá výprodej HTML, JavaScript a Bootstrap. Slevy až 80 %
Vyšlehej si extra vědomosti! Až 100% bodů na prémiový obsah zdarma! Více zde

Diskuze: Matlab - zadávaní lichých složek vektoru

Aktivity (1)
Avatar
Marek Novák
Člen
Avatar
Marek Novák:14.12.2018 21:38

n = load('ROZMER.dat'); % 1. bod Nacte pocet n dimenzi vektoru
k = 1;
NULA(n) = [0]; %2. bod vytvori nulovy vektor o n-dimenzi
while k<n/2
k = k + 1;
NULA(1:2:n) = input('Zadej hodnotu'); % 3. bod Postupne nacte z klavesnice hodnoty pro liche slozky a ulozi je do
%vektoru NULA
end

Zkusil jsem: Trochu si s tím vyhrát (prohazovat hodnoty, zapnout vypnout program...(moc toho ještě neumím :D))

Chci docílit: Zdravím, mám problém ve 3.bodě kdy se mi do všech lichých složek vektoru uloží poslední zadaná hodnota. Př.
zadám: 4,5,6 - výstup: [6 0 6 0 6]. Děkuji předem za rady.

 
Odpovědět 14.12.2018 21:38
Avatar
David Oczka
Redaktor
Avatar
David Oczka:15.12.2018 13:56

Ahoj,

problém je v tom, že v každé iteraci cyklu while znovu přiřadíš všem lichým indexům hodnotu, kterou načteš z funkce input. Ani cyklus while není zadán správně. Kdyby to byl jiný programovací jazyk, potřeboval bys projít všechny indexy a vybrat jen ty liché. Matlab Ti dovolí projít pouze ty liché pomocí cyklu for:

n = 5;
NULA(n) = 0;

for k = 1:2:n
    NULA(k) = input('Zadej hodnotu:\n');
end

Pokud bys i tak chtěl použít cyklus while, může to vypadat třeba takto:

n = 5;
NULA(n) = 0;

k = 1;
while k <= n
    if mod(k, 2) == 1
        NULA(k) = input('Zadej hodnotu:\n');
    end
    k = k + 1;
end

Nebo jsi možná chtěl použít svůj cyklus takto (?):

n = 5;
NULA(n) = 0;

k = 0;
while k<n/2
    NULA((2*k) + 1) = input('Zadej hodnotu:\n');
    k = k + 1;
end

Každopádně doporučuji projít nápovědu a ukázkové kódy přímo v Matlabu. A zkoušet, zkoušet a zkoušet... A časem to půjde... ;)

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 15.12.2018 13:56
Avatar
Marek Novák
Člen
Avatar
Marek Novák:15.12.2018 14:49

Děkuju už mi to funguje. Nevím proč mě nenapadlo použít for.

 
Nahoru Odpovědět 15.12.2018 14:49
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.