matlab中L0范数惩罚函数的绘图
Plot of the L0 norm penalty function in matlab
我有兴趣在 matlab 中绘制 L0-norm
惩罚函数。
其实我知道一个向量x的L0-norm
,||x||_0,returns 一个值,指定 x 中非零元素的总数。换句话说,||x||_0 = #(i | xi !=0).
例如x[=29=的L1-范数],它returnsx[=中元素的绝对值之和29=]。绘制 L_1 范数惩罚函数的 matlab 代码是:
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');
但是现在 L_0 规范呢??
非常感谢任何帮助!
将 for 循环内的行替换为以下内容:
penal(ii) = lambda*(x(ii) ~= 0);
这为向量 x.
中的所有非零值分配 lambda 的惩罚
我有兴趣在 matlab 中绘制 L0-norm
惩罚函数。
其实我知道一个向量x的L0-norm
,||x||_0,returns 一个值,指定 x 中非零元素的总数。换句话说,||x||_0 = #(i | xi !=0).
例如x[=29=的L1-范数],它returnsx[=中元素的绝对值之和29=]。绘制 L_1 范数惩罚函数的 matlab 代码是:
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');
但是现在 L_0 规范呢??
非常感谢任何帮助!
将 for 循环内的行替换为以下内容:
penal(ii) = lambda*(x(ii) ~= 0);
这为向量 x.
中的所有非零值分配 lambda 的惩罚