Ich bin interessiert, die L0-norm
Straffunktion in Matlab zu plotten.Plot der L0 Norm Straffunktion in Matlab
Tatsächlich weiß ich, dass die L0-norm
eines Vektors x, || x || _0, gibt einen Wert zurück, der die Gesamtzahl der von Null verschiedenen Elemente in x angibt. Mit anderen Worten, || x || _0 = # (i | xi! = 0).
Zum Beispiel für die L1-Norm von x , gibt sie die Summe der absoluten Werte der Elemente in x. Der MATLAB-Code der L_1 Norm Straffunktion zu zeichnen ist:
clear all;
clc;
x = [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5];
penal = zeros (length(x),1);
lambda = 2; % the tuning parameter
for ii = 1 : length(x)
penal(ii) = lambda*abs(x(ii));
end
figure
plot(x(:), penal(:), 'r');
Aber jetzt was über die L_0 Norm ??
Jede Hilfe wird sehr geschätzt!
BTW, könnten Sie 'For' Schleife vermeiden, indem Sie' Straf = Lambda * (X ~ = 0); 'oder 'Straf = Lambda * abs (x);'. Dies wäre für hochdimensionale Vektoren viel effizienter. – Prakhar
Vielen Dank! – Christina