[已解决] 关于曲面光滑化处理

[复制链接]
沈123456 发表于 4 天前
本帖最后由 沈123456 于 2021-6-10 09:42 编辑

小白在画图时,图象不是很光滑,所以特来请教一下,如何对数据进行光滑处理。现将数据和代码呈上。X=linspace(1,32,32);Y=linspace(1,32,32)
Z为矩阵化数据。在附件中,是一个32*32 的矩阵。
htsj.xls (34 KB, 下载次数: 1)

最佳答案


TouAkira 发表于 4 天前
interp2 就是了
举个例子
  1. X = [ 1 : 1 : 32 ]; Y = [ 1 : 1 : 32 ];
  2. [ X, Y ] = meshgrid( X, Y );
  3. N = 128;
  4. Xq = linspace( min( X, [], 'all' ), max( X, [], 'all' ), N );
  5. Yq = linspace( min( Y, [], 'all' ), max( Y, [], 'all' ), N );
  6. [ Xq, Yq ] = meshgrid( Xq, Yq );
  7. htsjq = interp2( X, Y, htsj, Xq, Yq, 'cubic' );
  8. close all;
  9. subplot( 121 )
  10. mesh( X, Y, htsj );
  11. subplot( 122 )
  12. mesh( Xq, Yq, htsjq );
复制代码
回复此楼

5 条回复


TouAkira 发表于 4 天前
interp2 就是了
举个例子
  1. X = [ 1 : 1 : 32 ]; Y = [ 1 : 1 : 32 ];
  2. [ X, Y ] = meshgrid( X, Y );
  3. N = 128;
  4. Xq = linspace( min( X, [], 'all' ), max( X, [], 'all' ), N );
  5. Yq = linspace( min( Y, [], 'all' ), max( Y, [], 'all' ), N );
  6. [ Xq, Yq ] = meshgrid( Xq, Yq );
  7. htsjq = interp2( X, Y, htsj, Xq, Yq, 'cubic' );
  8. close all;
  9. subplot( 121 )
  10. mesh( X, Y, htsj );
  11. subplot( 122 )
  12. mesh( Xq, Yq, htsjq );
复制代码
回复此楼

沈123456 发表于 4 天前
TouAkira 发表于 2021-6-10 10:35
用 interp2 就是了
举个例子

可以请问一下,为什么我将代码复制过来运行,代码报错。报错内容如下:

错误使用 min
选项无效。选项必须为 'omitnan' 或 'includenan'。

Xq = linspace( min( X, [], 'all' ), max( X, [], 'all' ), N );

个人使用的matlab是2016b版本。

TouAkira 发表于 4 天前
沈123456 发表于 2021-6-9 22:43
可以请问一下,为什么我将代码复制过来运行,代码报错。报错内容如下:

错误使用 min

这个语法要18以后的版本。旧版本改成嵌套的 min( min( X ) ),max同理

沈123456 发表于 4 天前
TouAkira 发表于 2021-6-10 10:51
这个语法要18以后的版本。旧版本改成嵌套的 min( min( X ) ),max同理

好的,非常感谢:victory:

沈123456 发表于 4 天前
TouAkira 发表于 2021-6-10 10:35
用 interp2 就是了
举个例子

可以请问一下,如果不用interp2,还有其他方法吗??我看了一下图像,还是有点强迫症,依然想进一步优化曲面平滑度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表