Ich bin ein neuer Benutzer von Matlab und Stackoverflow. Ich fragte question über, wie man Indikatorfunktion f schreibt, die Frage war wie folgt:Kann mir jemand sagen, wie man Indikatorfunktion für Vektoreingabe in Matlab schreibt?
"f sollte eine anonyme Funktion sein wie f = @ (t) 1 [0,0.25) (t). Jedoch die Zahl Die Anzahl der Intervalle für die stückweise konstante Funktion ist im Allgemeinen nicht festgelegt. Stattdessen hängt das stückweise Intervall von der Benutzereingabe ab. "
Ich bin froh, dass einige Benutzer meine Frage beantwortet haben. Die solution beantwortet ist wie folgt:
%defines weight vector. for example: a1=1, a2=2, a3=3, a4=4,a5=5
A = 1:5;
%defines a range vector
ranges = [0:(1/length(A)):1,inf];
%The padding is for handling cases where t<0 or t>=1
APadded = [0,A,0];
[email protected]*(t)APadded(find(t < ranges,1,'first'));
Result
f(0.1) = 1, f(0.3) = 2, f(0.5) = 3, f(0.7) = 4, f(0.9) = 5, f(-0.1) = f(1.1) = 0;
ich die Codes ein wenig erweitern möchten. Wenn ich zum Beispiel @ (X) sun (X) definiere, wenn die Eingabe von X ein Vektor ist, gibt es die Ausgabe als Vektor an. Die obige Lösung für das Indikatorergebnis gilt jedoch nicht. Man kann versuchen, f ([0.1 0.3 0.5 0.7 0.9]), was nicht 1, 2, 3, 4, 5
Wie dieses Problem zu lösen, so dass selbst wenn die Eingabe ein Vektor ist, wird es richtig geben Ergebnis?
Dank. Gibt es eine Möglichkeit, sich an die anderen Benutzer zu wenden? –