2012-10-04 11 views
7

Ich wollte die Standardableitung der Elemente einer Matrix berechnen. Also habe ich zuerst meine Matrix mit dem Befehl reshape in einen Vektor umgewandelt und dann std verwendet.Matlab's std arbeitet in REPL aber nicht im Programm

Allerdings habe ich eine Fehlermeldung:

Error using var (line 59) 
First argument must be single or double. 

Error in std (line 32) 
y = sqrt(var(varargin{:})); 

Error in reducenoise2>standabw (line 112) 
      s = std(B); 

Error in reducenoise2 (line 36) 
D = standabw(n,m,r,fu,D); 

So druckte ich meinen Vektor B, kurz bevor es zu std vorbei. Ich habe es einer Variablen zugewiesen x in REPL versuchte std(x) manuell aufrufen.

Interessanterweise funktioniert das gut.

Also wie kann die Funktion std – aufgerufen mit den gleichen Argumenten – führen zu einem Fehler bei der Verwendung in meinem Code, aber funktioniert gut in REPL?

Hier ist die Matlab-Funktion:

function [D] = standabw(n,m,r,fu,D) 
    for i = 1+r:n-r 
     for j = 1+r:m-r 
      C = D(i-r:i+r,j-r:j+r); 
      B = reshape(C,(2*r+1)^2,1) 
      s = std(B); 
      if s > fu 
       D(i,j) = 255; 
      end 
     end 
    end 
end 

Dies ist der Vektor B, kurz vor der Fehlermeldung:

B = 

    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    0 
    1 
    0 
    0 
    0 
    0 
    0 
    0 
    0 

Antwort

6

Wahrscheinlich Ihr B Vektor seine einiger int-Typ. Versuchen Sie, diese Art und Weise

std(double(B)) 

Die obige Aussage wirft auf doppelte Art B zuerst zu nennen, und ruft dann std.

Um zu überprüfen, was ist der Typ des Variablentyps whos an der Eingabeaufforderung.

+0

Vielen Dank! Jetzt funktioniert es. Aber ich verstehe immer noch nicht warum. Würde es dir etwas ausmachen, das zu erklären? – milli

+0

Einfach: Es erwartet Doppelgänger als Eingabe. –

Verwandte Themen