首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gnuplot图中的复合xrange

gnuplot图中的复合xrange
EN

Stack Overflow用户
提问于 2014-04-16 11:11:49
回答 2查看 72关注 0票数 1

我有一个周期系统,我想把这个系统的一些数据拟合成一个函数,但是我想把它限制在一个范围内。通常,如果您的范围是从x_min到x_max,这可以通过fit [x_min:x_max] f(x) "data" via a,b,c,...来实现。但是,因为我的系统是周期性的,所以我希望约束到在x值数组的末尾和开头包含一个段的范围。也就是说,如果x值是在0:L区间内给出的,我希望在fit中同时包含[0:x_max][x_min:L],在这里,x_max < x_min。这是如何做到的呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-16 15:37:25

这个怎么样?

代码语言:javascript
复制
fit [min1:max2] f(x) "data" u 1:($1 <= max1 || $1 >= min2 ? $2 : 1/0) via a,b,c,...

也就是说,在外部范围内使用[:]

我不确定它是不是更好,但它是更短一点。

或者,您可以通过以下方式使用set table

代码语言:javascript
复制
set table 'newdata'
p [0:x_max] 'data'
p [x_min:L] 'data'
unset table

fit f(x) 'newdata' via a,b,c,...

基本上,这将写入一个只包含两个范围之间的数据的新文件。可以说更好,绝对不是更短!

票数 1
EN

Stack Overflow用户

发布于 2014-04-16 12:46:18

我想出了一个丑陋的方法,但如果有人想出一个更好的方法,我会接受这个答案。

假设想要拟合(或绘制)数据的两个范围是由[min1:max1][min2:max2]提供的,然后使用条件匹配和“忽略”函数1/0,您可以执行以下操作:

代码语言:javascript
复制
fit f(x) "data" u 1:( ($1 >= min1 && $1 <= max1) || ($1 >= min2 && $1 <= max2) ? $2 : 1/0) via a,b,c,...

也就是说,如果x在第一个或第二个区间内,那么使用y作为拟合值,否则忽略这些数据点。

这种方法也应该适用于绘图,但我认为类似于复合范围运算符[min1:max1 && min2:max2] (它不起作用)会更可取。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23107743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档