我正在尝试创建一个等值线图,重点关注从 1 到 1.05 的特定有限范围。同时,我需要接近 1 的非常高分辨率。我想我可以使用类似下面的东西,但间距看起来仍然是线性的
out=exp(linspace(log(1),log(1.05),100))
plot(diff(out))
Run Code Online (Sandbox Code Playgroud)
当边界如此严格时,增强间距非线性的最佳方法是什么?同样,我需要保持接近 1 的高密度,同时分辨率以非线性方式逐渐减小。我有一些想法,但我认为有人可能有一个快速的 2 班轮或类似的东西。
不要应用函数f(x) = e x来获得“更陡峭”的非线性,而是应用f(x) = e ax
n = 20;
a = 100;
lower = 1;
upper = 1.05;
temp = exp(linspace(log(1)*a,log(1.05)*a,n))
% re-scale to be between 0 and 1
temp_01 = temp/max(temp) - min(temp)/max(temp)
% re-scale to be between your limits (i.e. 1 and 1.05)
out = temp_01*(upper-lower) + lower
Run Code Online (Sandbox Code Playgroud)
现在plot(diff(out),diff(out),'o')生产
请注意,您可以使用与上面完全相同的缩放方案,logspace因此只需使用
temp = logspace(...)
Run Code Online (Sandbox Code Playgroud)
然后其余的都是一样的