在 MATLAB/Octave 中绘制不连续函数



我无法在网上或文档中找到这个,尽管这可能是由于我自己的无能。我通过将 x 放在 x 向量中,将 y 放在 fx 向量中,然后调用 plot(x,fx) 来绘制 Octave 函数。但是,由于该函数具有巨大的垂直跳跃,因此它会产生不需要的垂直线。我可以做plot(x,fx,"."),但这会使线很粗。如何用细线绘制不连续函数?

您可以在不连续处插入 nan s。自动化的一种方法可能是寻找较大的差商:

x = linspace(0,30,1000);
y = ceil(cos(x));
%%%%%%%%%%%%%%%%%%%%%%%
dxLimit = 10;
x = x(:).'; y = y(:).';
discontinuities = (abs(diff(y)./diff(x))>dxLimit);
x = [x; nan(1,length(x))];
y = [y; nan(1,length(y))];
x(2*find(~discontinuities)) = [];
y(2*find(~discontinuities)) = [];
x = x(:).'; y = y(:).';
%%%%%%%%%%%%%%%%%%%%%%%
plot(x,y,'-'); ylim(ylim+[-0.3,+0.3]);

在Octave中,您可以像这样减小标记的大小:

x = 0:0.1:100;
fx = rand(length(x), 1)';
plot(x, fx, ".", "markersize", 1)

最新更新