[已解决] matlab画三维图的问题

[复制链接]
Zc_Young 发表于 2020-11-26 11:45:04
在做小数延时滤波器,画VFR误差图的时候出现了问题。论文中画出的图是这样的:
图1.png
从频率(右侧)看过去的话感觉是看不到里面的线条,显得比较整齐。
而我自己用plot3画出来是这样的:
图2.png
显得很杂乱,又试了试mesh,画出来的效果也不是很好:
图3.png
我应该可以保证数据都是正确的,所以想问一下要怎么设置才能出现类似图1的效果啊?从右边看过去看不到里面的线条?
求助求助,感谢大佬!!

最佳答案


TouAkira 发表于 2020-11-27 03:29:11
本帖最后由 TouAkira 于 2020-11-26 15:33 编辑

直接用
  1. waterfall( X, Y, Z );
复制代码


或者自己用 fill3 慢慢画
  1. clear; clc; close all;
  2. [ X, Y ] = meshgrid( -10 : 1/2 : 10, -10 : 1/2 : 10 );
  3. Z = Y .* sin( X ) - X .* cos( Y );
  4. StartingPoint = min( Z, [], 'all' );
  5. X = [ X( :, 1 ), X, X( :, end ) ];
  6. Y = [ Y( :, 1 ), Y, Y( :, end ) ];
  7. Z = [ StartingPoint*ones( size( X, 1 ), 1 ), Z, StartingPoint*ones( size( X, 1 ), 1 ) ];
  8. figure; hold on;
  9. for ii = 1 : 1 : size( X, 1 )
  10.     fill3( X( ii, : ), Y( ii, : ), Z( ii, : ), 'w', 'FaceAlpha', 0.5 );
  11. end
  12. view( 3 );
复制代码
回复此楼

2 条回复


TouAkira 发表于 2020-11-27 03:29:11
本帖最后由 TouAkira 于 2020-11-26 15:33 编辑

直接用
  1. waterfall( X, Y, Z );
复制代码


或者自己用 fill3 慢慢画
  1. clear; clc; close all;
  2. [ X, Y ] = meshgrid( -10 : 1/2 : 10, -10 : 1/2 : 10 );
  3. Z = Y .* sin( X ) - X .* cos( Y );
  4. StartingPoint = min( Z, [], 'all' );
  5. X = [ X( :, 1 ), X, X( :, end ) ];
  6. Y = [ Y( :, 1 ), Y, Y( :, end ) ];
  7. Z = [ StartingPoint*ones( size( X, 1 ), 1 ), Z, StartingPoint*ones( size( X, 1 ), 1 ) ];
  8. figure; hold on;
  9. for ii = 1 : 1 : size( X, 1 )
  10.     fill3( X( ii, : ), Y( ii, : ), Z( ii, : ), 'w', 'FaceAlpha', 0.5 );
  11. end
  12. view( 3 );
复制代码
回复此楼

Zc_Young 发表于 2020-11-27 10:19:58

谢谢~我试了一下,第二种办法在某种情况下是可行的,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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