Wpis z mikrobloga

W MATlabie przy pracy z probkami potrzebuje wyliczyc srednia z ostatnich 50.

for v = 1:n

if v > 50
value = 0;
for q = 1:50
value = value + y((v-q),1);
end
end

avgvalue = value/50;

if ( (avg
value > 0.02) && (startcounting == 0))

(...)

end
end

taki kod daje jednak nastepujacy blad:

Operands to the || and && operators must be convertible to logical scalar values.

Error in dualtonedecoder2 (line 28)
if ( (avg
value > 0.02) && (startcounting == 0))

Problem jest w tym ze value i avg_value nie posiadaja wartosci? Wie ktos moze co robie zle?

#programowanie
  • 3
  • Odpowiedz
@JohnReese: Co się stanie dla pierwszego przejścia pętli?
v = 1
v > 50 (false)
value - undefined
avg_value = undefined/50

Wszystkie te zagnieżdżone pętle wyglądają źle.
n to liczba próbek?
Czym jest y? Jakaś funkcja?

Jeśli wiesz że próbek jest więcej niż 50 to powinno to wyglądać tak:

value = 0
for v= n-50:n
value = value + y(v, 1)
end;
avg = value/50

Jeśli próbek może być mniej to
  • Odpowiedz
@diabel_z_piekla: Matlaba znam slabo wiec czasami zamiast zrobic cos prosto to wynajduje kolo od nowa.

y jest matrixem ale uzywam tylko jednej kolumny. Ogolnie juz rozumiem w czym jest problem. Do 50 probek value nie ma przypisanej wartosci ale "if" gdzie jego srednia wartosc jest porownywana do 0,02 jest normalnie wykonywany i z tad ten blad.
  • Odpowiedz