在matlab中的L1范数等值线图

时间:2015-05-04 21:05:33

标签: matlab vector contour

我试图在matlab中绘制L1范数的级别集。但它根本不起作用,我被卡住了。有什么帮助吗?

x = linspace(-1,1,10);
y = linspace(-1,1,10);
[xm,ym] = meshgrid(x,y);
z = sum(abs(xm-ym));
surfc(x,y,z)

1 个答案:

答案 0 :(得分:5)

根据definition of L1 norm

将第四行更改为此行
z = abs(xm)+abs(ym);

您可以更有效地使用bsxfun来避免生成矩阵xmym

x = linspace(-1,1,10);
y = linspace(-1,1,10);
z = bsxfun(@plus, abs(x), abs(y).');
surfc(x,y,z)

这两种方法中的任何一种产生:

enter image description here

为了获得更好的图片,您应该增加采样,并可能删除表面边缘:

x = linspace(-1,1,100);
y = linspace(-1,1,100);
z = bsxfun(@plus, abs(x), abs(y).');
surfc(x,y,z,'edgecolor','none')

enter image description here