Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何减少曲面图中显示的网格线数量?_Matlab_Plot_3d_Matlab Figure - Fatal编程技术网

Matlab 如何减少曲面图中显示的网格线数量?

Matlab 如何减少曲面图中显示的网格线数量?,matlab,plot,3d,matlab-figure,Matlab,Plot,3d,Matlab Figure,我找到了,但我不能完成我的工作。我想更精确地绘制我正在研究的函数,而不是用黑色墨水对函数进行过度着色。。。这意味着减少网格线的数量。我认为这些函数是复杂的 我试图将在上面链接中编写的工作添加到我已经存在的代码中。 这就是我所做的: r = (0:0.35:15)'; % create a matrix of complex inputs theta = pi*(-2:0.04:2); z = r*exp(1i*theta); w = z.^2; f

我找到了,但我不能完成我的工作。我想更精确地绘制我正在研究的函数,而不是用黑色墨水对函数进行过度着色。。。这意味着减少网格线的数量。我认为这些函数是复杂的

我试图将在上面链接中编写的工作添加到我已经存在的代码中。 这就是我所做的:

r = (0:0.35:15)';                        % create a matrix of complex inputs
theta = pi*(-2:0.04:2);
z = r*exp(1i*theta);
w = z.^2;

figure('Name','Graphique complexe','units','normalized','outerposition',[0.08 0.1 0.8 0.55]);

s = surf(real(z),imag(z),imag(w),real(w));    % visualize the complex function using surf
s.EdgeColor = 'none';

x=s.XData;
y=s.YData;
z=s.ZData;

x=x(1,:);
y=y(:,1);
% Divide the lengths by the number of lines needed
xnumlines = 10; % 10 lines
ynumlines = 10; % 10 partitions
xspacing = round(length(x)/xnumlines);
yspacing = round(length(y)/ynumlines);
hold on
for i = 1:yspacing:length(y)
    Y1 = y(i)*ones(size(x)); % a constant vector
    Z1 = z(i,:);
    plot3(x,Y1,Z1,'-k');
end
% Plotting lines in the Y-Z plane
for i = 1:xspacing:length(x)
    X2 = x(i)*ones(size(y)); % a constant vector
    Z2 = z(:,i);
    plot3(X2,y,Z2,'-k');
end
hold off
但问题是网格仍然是不可见的。如何解决这个问题?问题在哪里?
也许,不画网格,也许可以画圆和半径,就像最初在图上画的那样

这种方法怎么样

[X,Y,Z] = peaks(500) ;

surf(X,Y,Z) ;
shading interp ;
colorbar

hold on

miss = 10 ;  % enter the number of lines you want to miss
plot3(X(1:miss:end,1:miss:end),Y(1:miss:end,1:miss:end),Z(1:miss:end,1:miss:end),'k') ;
plot3(X(1:miss:end,1:miss:end)',Y(1:miss:end,1:miss:end)',Z(1:miss:end,1:miss:end)','k') ;

我找到了我的一本旧剧本,在那里我或多或少做了你想要的。我把它改成了你们这里的径向图

此脚本中有两个技巧:

  • 曲面图包含所有数据,但由于没有绘制网格,因此很难看到该曲面中的细节(您的数据非常平滑,对于更崎岖的曲面尤其如此,因此我在数据中添加了一些噪波以显示这一点)。为了提高可见性,我们对颜色使用插值,并添加光源

  • 绘制的网格是原始数据的子采样版本。由于原始数据是径向的,
    XData
    YData
    属性不是矩形网格,因此不能只取这些数组的第一行和第一列。相反,我们使用完整矩阵,但子样本行用于绘制圆,子样本列用于绘制半径


  • 不幸的是。当未命中率较高时,会出现问题。。。网格甚至不完整:/I我有一个问题,因为您的方法在使用子批的情况下不起作用…@MarineGalantin:“不起作用”是什么意思?您是否收到错误消息、错误输出。。。你能更具体地描述一下什么地方出了问题吗?我正在尝试修复错误。。。如果我找不到任何解决办法,我会回来的。你认为我在stack上再问一个问题更好吗?还是我可以在这篇文章上编辑我的问题?@MarineGalantin:如果是一个小细节,我可以把它添加到这个答案中。如果事情比这更复杂,最好问一个新问题。@MarineGalantin:我不确定我是否理解你的意思。为什么你希望这个图形是一条直线?您正在绘制
    f=imag(w)
    作为
    x=real(z),y=imag(z)
    的函数。如果
    w=z
    ,则绘图的高度f等于y,即f(x,y)=y。该域是圆形的,因此有一个沿y轴倾斜、沿x轴平坦的圆盘。行
    设置(gca,'DataAspectRatio',[1,1,40])
    设置f轴的拉伸比x轴和y轴低40倍,使磁盘看起来像是平放的。在本例中,将其更改为
    [1,1,1]
    ,以更好地查看数据。
    % create a matrix of complex inputs
    % (similar to OP, but with more data points)
    r = linspace(0,15,101).';
    theta = linspace(-pi,pi,101);
    z = r * exp(1i*theta);
    w = z.^2;
    
    figure, hold on
    
    % visualize the complex function using surf
    % (similar to OP, but with a little bit of noise added to Z)
    s = surf(real(z),imag(z),imag(w)+5*rand(size(w)),real(w));
    s.EdgeColor = 'none';
    s.FaceColor = 'interp';
    
    % get data back from figure
    x = s.XData;
    y = s.YData;
    z = s.ZData;
    
    % draw circles -- loop written to make sure the outer circle is drawn
    for ii=size(x,1):-10:1
       plot3(x(ii,:),y(ii,:),z(ii,:),'k-');
    end
    
    % draw radii
    for ii=1:5:size(x,2)
       plot3(x(:,ii),y(:,ii),z(:,ii),'k-');
    end
    
    % set axis properties for better 3D viewing of data
    set(gca,'box','on','projection','perspective')
    set(gca,'DataAspectRatio',[1,1,40])
    view(-10,26)
    
    % add lighting
    h = camlight('left');
    lighting gouraud
    material dull