找了好久发现,在这里表述一下
以上图为例,
选中要稀疏的曲线
比如下面的输入部分,我输入1:5:50;50表示我开始画图时的点数,5表示间隔的点数
确定后就是这种情况,标识点的密度得到降低。
我看楼上的回复很给力,但是我找了很久也是没有找到那个功能,所以自己有想了一个循环的方法,给大家做一下参考
程序如下
x=0:0.01:2*pi;
y=sin(x);
plot(x,y)
hold on
for i=0:0.5:2*pi
y=sin(i);
plot(i,y,'marker','o')
end
运行结果
程序如下:
syms xGstar yArstar
D1=1.5; D2=1.6; K=4; phi=0.01;
acstar1 = (0.5*sqrt(pi)*K*phi)^(2/(1-D1))*xGstar^2;
acstar2 = (0.5*sqrt(pi)*K*phi)^(2/(1-D2))*xGstar^2;
h = ezplot(sqrt(xGstar/pi)*(yArstar/3)^0.75*log(yArstar/(3*acstar1))+ ...
K*phi*yArstar^0.75*(3*acstar1)^0.25-3e-4,[1e-9,1e-5,1e-5,5.0e-1]);
set(h,'LineStyle','-','color','k');
X = get(h, 'x');
Y = get(h, 'y');
dX = max(X) - min(X);
dY = max(Y) - min(Y);
e = 0.01; % 距离系数,越小则越密集
clear x y
x(1) = X(1);
y(1) = Y(1);
for i = 2 : length(X)
if sqrt( ((X(i)-x(end))/dX)^2 + ((Y(i)-y(end))/dY)^2 ) >= e
x(end+1) = X(i);
y(end+1) = Y(i);
end
end
% 使用相同的颜色和线宽绘制Marker
hold on
plot(x,y,'o','color',get(h,'color'),'linewidth',get(h,'linewidth'))
这是比较麻烦的,我也找了许久,没发现MATLAB有现成的命令。
我的做法是按原来的密集数据y画一条线,然后提取出稀疏的数据y2在画,此时画时,只要画标记就行。
plot(y,'k');
hold on;
plot(y2,'o');
y2是y的稀疏数据。