我无法在网络或文档中找到这个,虽然这可能是我自己的无能。我通过将x放在x向量中并将y放在fx向量中然后调用plot(x,fx)
来绘制八度函数。但是,由于该函数具有巨大的垂直跳跃,因此会产生不需要的垂直线。我可以做plot(x,fx,".")
,但这会使线条变得很粗糙。如何用细线绘制不连续的函数?
答案 0 :(得分:3)
您可以在不连续处插入nan
个。
自动化这种方法的一种方法是寻找大的差异商:
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]);
答案 1 :(得分:1)
在Octave中,您可以像这样减小标记的大小:
x = 0:0.1:100;
fx = rand(length(x), 1)';
plot(x, fx, ".", "markersize", 1)