2013-01-08 15 views
5

Zakładając, że srcHoughMatrix jest 3-wymiarowa macierz:Jakikolwiek sposób osiągnąć i ++ w matlab?

Zamiast

if (currentRadius >= MINIMUM_ALLOWED_RADIUS) 
    % we're using only radiuses that are 6 or above 
     currentHough = srcHoughMatrix(index,jindex,currentRadius); 
     srcHoughMatrix(index,jindex,currentRadius) = currentHough + 1; 
    end 

Jak mogę dodać 1 do każdej komórki, jeżeli warunek jest spełniony, bez użycia zmiennej tymczasowej lub bez

srcHoughMatrix(index,jindex,currentRadius) = srcHoughMatrix(index,jindex,currentRadius) + 1; 

Dzięki

+2

Nie, nie ma. – Praetorian

+2

Ponadto jest to "każdy element", a nie "każda komórka". – Jonas

Odpowiedz

7

Nie dlatego, że nie zrobiłbym tego, co sugerował @ Jonas, ale co z używaniem operator? służy do definiowania nowych symboli operatora zdefiniowanych przez użytkownika lub do ich usuwania (będziesz potrzebował symbolicznego zestawu narzędzi).

operator(symb, f, T, prio) definiuje nowy symbol operatora symb typu T (Przedrostek | Postfix | Binary | nary) z pierwszeństwem prio. Funkcja f ocenia wyrażenia za pomocą nowego operatora.

względu na symbol operator "++", powiedzmy, z oceniając funkcja f następujące wyrażenia są budowane przez parser, w zależności od rodzaju operatora, przy czym:

Prefiks: Wejście + + x daje w wyniku f (x).

Postfix: Wejście x ++ skutkuje f (x).

Binarny: Wejście x ++ y ++ z skutkuje f (f (x, y), z).

Nary: Wejście x ++ y ++ z oznacza f (x, y, z)).

zobacz więcej na matlab's documentation.

+0

Och, dobry połów! Brak dostępu do symbolicznego zestawu narzędzi (mam do tego Mathematica) sprawił, że tęskniłem za tym całkowicie. +1 – Jonas

5

Matlab nie maOperator.

Jednakże, jeśli chcesz, aby skrócić swoje oświadczenie i uniknąć zmienną tymczasową, można przynajmniej napisać

srcHoughMatrix(index,jindex,MINIMUM_ALLOWED_RADIUS:end) = ... 
    srcHoughMatrix(index,jindex,MINIMUM_ALLOWED_RADIUS:end) + 1; 

(zakładając, że currentRadius przyjmuje wszystkie wartości od 1 do 3. wymiar-wielkości tablica).

+0

Należy udokumentować, czy ta odpowiedź tworzy tymczasowo, czy nie. – user2987828

+0

@ user2987828: ok, gotowe. Zakładałem, że z rozwiązania wynika, że ​​nie ma tworzonej zmiennej tymczasowej, ale lepiej jest być wyraźnym. Ponadto Matlab nie tworzy wewnętrznie plików tymczasowych, o ile wiem. – Jonas

Powiązane problemy