我试图在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)
答案 0 :(得分:5)
z = abs(xm)+abs(ym);
您可以更有效地使用bsxfun
来避免生成矩阵xm
,ym
:
x = linspace(-1,1,10);
y = linspace(-1,1,10);
z = bsxfun(@plus, abs(x), abs(y).');
surfc(x,y,z)
这两种方法中的任何一种产生:
为了获得更好的图片,您应该增加采样,并可能删除表面边缘:
x = linspace(-1,1,100);
y = linspace(-1,1,100);
z = bsxfun(@plus, abs(x), abs(y).');
surfc(x,y,z,'edgecolor','none')