如何在 MATLAB 中平滑曲面?
How can I smooth a surface in MATLAB?
我在 matlab 中有一个曲面,它是使用以下代码绘制的:
[xi, yi] = meshgrid(S/K, days);
vq = griddata(S/K, days, rbf/K, xi, yi,'natural');
mesh(xi,yi,vq)
生成的图像非常粗糙,并且有很多网格线,因为每个向量中大约有 200 个数据点。是否可以绘制具有较少网格点(例如 20)的网格,从而平均现有网格网格、网格数据表面?
一种选择是在您的 vq
数据上使用 conv2
进行平滑处理,然后按照@Ander 的建议进行缩减采样:
n = 5; % averaging size
vq_2 = conv2(vq, ones(n)/n.^2,'same');
mesh(xi(1:20:end,1:20,end),yi(1:20:end,1:20,end),vq_2(1:20:end,1:20,end))
默认情况下会有一点边缘效应 conv2
用零填充。
我在 matlab 中有一个曲面,它是使用以下代码绘制的:
[xi, yi] = meshgrid(S/K, days);
vq = griddata(S/K, days, rbf/K, xi, yi,'natural');
mesh(xi,yi,vq)
生成的图像非常粗糙,并且有很多网格线,因为每个向量中大约有 200 个数据点。是否可以绘制具有较少网格点(例如 20)的网格,从而平均现有网格网格、网格数据表面?
一种选择是在您的 vq
数据上使用 conv2
进行平滑处理,然后按照@Ander 的建议进行缩减采样:
n = 5; % averaging size
vq_2 = conv2(vq, ones(n)/n.^2,'same');
mesh(xi(1:20:end,1:20,end),yi(1:20:end,1:20,end),vq_2(1:20:end,1:20,end))
默认情况下会有一点边缘效应 conv2
用零填充。