第一组:
0,0,0,20,3340,4820,4860,4900,4900,4900,4900,9660,19000,19080,19600,19380,19600,19540,19380,19660,19840,19180,19560,19500,19440,19580,19480,19580,19500,19560,19460,19580,19520,19600,19540,19560,19540,19580,19560,19540,19520,19560,19540,19560,19540,19560,19580,19560数据重0开始:
“0,0,0,20,3340,4820,4860,4900,4900,4900,4900”相当于车辆第一组轮胎进入电子秤
“9660,19000,19080,19600,19380,19600,19540,19380,19660,19840,19180,19560,19500,19440,19580,19480,19580,19500,19560,19460,19580,19520,19600,19540,19560,19540,19580,19560,19540,19520,19560,19540,19560,19540,19560,19580,19560”相当于车辆第二组轮胎进入电子秤因此得出结论:此车2轴,车货总重19560,第一轴大概重量4900,第二轴大概重量19560-4900=14660第二组:
0,0,0,1900,5120,5180,5480,5480,5320,5480,18940,19900,19920,19920,19900,20000,19980,19960,20060,19700,19900,19760,20020,20160,20140,19800,20100,19500,20760,20380,20060,19920,20200,19700,20360,19640,19600,20420,19740,20240,19940,20020,20040,20040,20040,20060,20020,20080,20020,20080,20020,20080,20020,20060,20060,20060,20080,20040,20080,20060,20040数据重0开始:
“0,0,0,1900,5120,5180,5480,5480,5320,5480”相当于车辆第一组轮胎进入电子秤
“18940,19900,19920,19920,19900,20000,19980,19960,20060,19700,19900,19760,20020,20160,20140,19800,20100,19500,20760,20380,20060,19920,20200,19700,20360,19640,19600,20420,19740,20240,19940,20020,20040,20040,20040,20060,20020,20080,20020,20080,20020,20080,20020,20060,20060,20060,20080,20040,20080,20060,20040”相当于车辆第二组轮胎进入电子秤因此得出结论:此车2轴,车货总重20420,第一轴大概重量5480,第二轴大概重量20420-5480=14940第三组:
0,0,0,1480,5420,5780,5760,5760,5760,5760,5760,5760,5760,5740,5660,5620,5540,5560,5540,5540,5560,5560,5560,5620,6880,12960,13120,13140,13180,13140,13160,13160,13200,16560,19940,20140,20120,20240,20200,20220,20180,20200,20200,20220,20140,20200,20160,20240,20220,20200,20200,20180,20160,20200,20240,20200,20220,20220,20240,20220,20240,20300,20540,20520,20580,20580,20580,20560,20600,20620,20680,20560,20560,20460,20340,20280,20300,20280,20280,20280,20260,20800,28000,31500,31700,31700,31720,31660,31680,31700,32140,38500,42620,42620,42620,42400,42360,42340,42200,42260,43060,47160,51660,52320,52060,52420,52600,52420,52160,52180,52220,52240,52320,52780,52200,52320,52400,52380,52180,52460,52420,52360,52380,52340,52400,52360,52380,52360,52380,52360数据重0开始:
“0,0,0,1480,5420,5780,5760,5760,5760,5760,5760,5760,5760,5740,5660,5620,5540,5560,5540,5540,5560,5560,5560,5620,6880”相当于车辆第一组轮胎进入电子秤“12960,13120,13140,13180,13140,13160,13160,13200,16560”相当于车辆第二组轮胎进入电子秤“19940,20140,20120,20240,20200,20220,20180,20200,20200,20220,20140,20200,20160,20240,20220,20200,20200,20180,20160,20200,20240,20200,20220,20220,20240,20220,20240,20300,20540,20520,20580,20580,20580,20560,20600,20620,20680,20560,20560,20460,20340,20280,20300,20280,20280,20280,20260,20800”相当于车辆第三组轮胎进入电子秤“28000,31500,31700,31700,31720,31660,31680,31700,32140”相当于车辆第四组轮胎进入电子秤“38500,42620,42620,42620,42400,42360,42340,42200,42260,43060,47160”相当于车辆第五组轮胎进入电子秤“51660,52320,52060,52420,52600,52420,52160,52180,52220,52240,52320,52780,52200,52320,52400,52380,52180,52460,52420,52360,52380,52340,52400,52360,52380,52360,52380,52360”相当于车辆第六组轮胎进入电子秤因此得出结论:此车6轴,车货总重52380,第一轴大概重量5560,第二轴大概重量13200-5560=7640,第三轴大概重量20580-13200=7380,第四轴大概重量31700-20580=11120,第五轴大概重量42620-31700=10920,第六轴大概重量52360-42620=9740
不知道这个如何做成数学模型,或者如何查找规律?希望大家给出建议!!
0,0,0,20,3340,4820,4860,4900,4900,4900,4900,9660,19000,19080,19600,19380,19600,19540,19380,19660,19840,19180,19560,19500,19440,19580,19480,19580,19500,19560,19460,19580,19520,19600,19540,19560,19540,19580,19560,19540,19520,19560,19540,19560,19540,19560,19580,19560数据重0开始:
“0,0,0,20,3340,4820,4860,4900,4900,4900,4900”相当于车辆第一组轮胎进入电子秤
“9660,19000,19080,19600,19380,19600,19540,19380,19660,19840,19180,19560,19500,19440,19580,19480,19580,19500,19560,19460,19580,19520,19600,19540,19560,19540,19580,19560,19540,19520,19560,19540,19560,19540,19560,19580,19560”相当于车辆第二组轮胎进入电子秤因此得出结论:此车2轴,车货总重19560,第一轴大概重量4900,第二轴大概重量19560-4900=14660第二组:
0,0,0,1900,5120,5180,5480,5480,5320,5480,18940,19900,19920,19920,19900,20000,19980,19960,20060,19700,19900,19760,20020,20160,20140,19800,20100,19500,20760,20380,20060,19920,20200,19700,20360,19640,19600,20420,19740,20240,19940,20020,20040,20040,20040,20060,20020,20080,20020,20080,20020,20080,20020,20060,20060,20060,20080,20040,20080,20060,20040数据重0开始:
“0,0,0,1900,5120,5180,5480,5480,5320,5480”相当于车辆第一组轮胎进入电子秤
“18940,19900,19920,19920,19900,20000,19980,19960,20060,19700,19900,19760,20020,20160,20140,19800,20100,19500,20760,20380,20060,19920,20200,19700,20360,19640,19600,20420,19740,20240,19940,20020,20040,20040,20040,20060,20020,20080,20020,20080,20020,20080,20020,20060,20060,20060,20080,20040,20080,20060,20040”相当于车辆第二组轮胎进入电子秤因此得出结论:此车2轴,车货总重20420,第一轴大概重量5480,第二轴大概重量20420-5480=14940第三组:
0,0,0,1480,5420,5780,5760,5760,5760,5760,5760,5760,5760,5740,5660,5620,5540,5560,5540,5540,5560,5560,5560,5620,6880,12960,13120,13140,13180,13140,13160,13160,13200,16560,19940,20140,20120,20240,20200,20220,20180,20200,20200,20220,20140,20200,20160,20240,20220,20200,20200,20180,20160,20200,20240,20200,20220,20220,20240,20220,20240,20300,20540,20520,20580,20580,20580,20560,20600,20620,20680,20560,20560,20460,20340,20280,20300,20280,20280,20280,20260,20800,28000,31500,31700,31700,31720,31660,31680,31700,32140,38500,42620,42620,42620,42400,42360,42340,42200,42260,43060,47160,51660,52320,52060,52420,52600,52420,52160,52180,52220,52240,52320,52780,52200,52320,52400,52380,52180,52460,52420,52360,52380,52340,52400,52360,52380,52360,52380,52360数据重0开始:
“0,0,0,1480,5420,5780,5760,5760,5760,5760,5760,5760,5760,5740,5660,5620,5540,5560,5540,5540,5560,5560,5560,5620,6880”相当于车辆第一组轮胎进入电子秤“12960,13120,13140,13180,13140,13160,13160,13200,16560”相当于车辆第二组轮胎进入电子秤“19940,20140,20120,20240,20200,20220,20180,20200,20200,20220,20140,20200,20160,20240,20220,20200,20200,20180,20160,20200,20240,20200,20220,20220,20240,20220,20240,20300,20540,20520,20580,20580,20580,20560,20600,20620,20680,20560,20560,20460,20340,20280,20300,20280,20280,20280,20260,20800”相当于车辆第三组轮胎进入电子秤“28000,31500,31700,31700,31720,31660,31680,31700,32140”相当于车辆第四组轮胎进入电子秤“38500,42620,42620,42620,42400,42360,42340,42200,42260,43060,47160”相当于车辆第五组轮胎进入电子秤“51660,52320,52060,52420,52600,52420,52160,52180,52220,52240,52320,52780,52200,52320,52400,52380,52180,52460,52420,52360,52380,52340,52400,52360,52380,52360,52380,52360”相当于车辆第六组轮胎进入电子秤因此得出结论:此车6轴,车货总重52380,第一轴大概重量5560,第二轴大概重量13200-5560=7640,第三轴大概重量20580-13200=7380,第四轴大概重量31700-20580=11120,第五轴大概重量42620-31700=10920,第六轴大概重量52360-42620=9740
不知道这个如何做成数学模型,或者如何查找规律?希望大家给出建议!!
解决方案 »
- C#serialport相关问题
- 一段快速傅里叶变换的代码,看不懂,求高手指点。
- 我的物理数据库为什么没有添加一行
- 输入问题?
- C#能做邮件服务器吗?
- 那位达人能说说虚函数的new和override方法的区别
- 谁知道命令行参数的算法改如何写???让人很困惑的问题
- VS2008,C# WINFORM程序,调用php的webservice
- 请问该如何解决“试图运行项目时出错:无法在WEB服务器上启动调试.未将项目配置为进行调试。”问题?
- dataGrid怎样自定义输出数据,请各位高手帮忙
- 类似留言,用js显示到界面,用C#保存到数据库,但后者刷新掉js输出,怎么办?
- Winform 中动态记录管理员所有的操作问题
static void Main()
{
const double a = 800; //正的变化率阀值,轮组进入
const double b = -800; //负的变化率阀值,轮组离开
string inputstr = "0,0,0,1480,5420,5780,5760,5760,5760,5760,5760,5760,5760,5740,5660,5620,5540,5560,5540,5540,5560,5560,5560,5620,6880,12960,13120,13140,13180,13140,13160,13160,13200,16560,19940,20140,20120,20240,20200,20220,20180,20200,20200,20220,20140,20200,20160,20240,20220,20200,20200,20180,20160,20200,20240,20200,20220,20220,20240,20220,20240,20300,20540,20520,20580,20580,20580,20560,20600,20620,20680,20560,20560,20460,20340,20280,20300,20280,20280,20280,20260,20800,28000,31500,31700,31700,31720,31660,31680,31700,32140,38500,42620,42620,42620,42400,42360,42340,42200,42260,43060,47160,51660,52320,52060,52420,52600,52420,52160,52180,52220,52240,52320,52780,52200,52320,52400,52380,52180,52460,52420,52360,52380,52340,52400,52360,52380,52360,52380,52360";
string[] inputsplit = inputstr.Split(new char[] { ',' });
double[] inputdouble=new double[inputsplit.Length];//重量数据流
for (int i = 0; i < inputsplit.Length; i++)
{
inputdouble[i] = Convert.ToDouble(inputsplit[i]);
}
double[] rate = new double[inputsplit.Length]; //变化率数据流,时间单位为1
int[] signal = new int[inputdouble.Length]; //阀值量化信号数据流
for (int i = 1; i < inputdouble.Length; i++)
{
rate[i] = inputdouble[i] - inputdouble[i - 1];
if (rate[i] > a)
signal[i] = 1;
else if (rate[i] < b)
signal[i] = -1;
else
signal[i] = 0;
}
int bit = 0;
List<int> index = new List<int>();
for (int i = 1; i < inputdouble.Length; i++)
{
if (bit == 0 && signal[i] == 1)
{
bit = 1;
index.Add(i - 1); //轮组开始进入时的inputdouble下标
}
if (bit == 1 && signal[i] == 0)
{
bit = 0;
index.Add(i); //轮组稳定时的inputdouble下标
}
}
index.Add(inputdouble.Length-1); //因为你原始数据并不是整个过程,而是轮组进入的数据流,为了处理方便,记录最后一个数据的下标
for (int i = 2; i < index.Count; i=i+2)
{
double avg = 0;
for (int j = index[i - 1]; j <= index[i]; j++)
avg = avg + inputdouble[j];
avg=avg/(index[i]-index[i-1]+1); //取得重平均值
Console.Write(((int)avg).ToString()+",");
}
}
输出结果:
5663,13157,20322,31757,42482,52348
对应于你最后一组数据。
阀值是关键,如果想做的更好一点,阀值看能不能动态确定。
{
const double a = 800; //正的变化率阀值,轮组进入
const double b = -800; //负的变化率阀值,轮组离开
string inputstr = "0,0,0,1480,5420,5780,5760,5760,5760,5760,5760,5760,5760,5740,5660,5620,5540,5560,5540,5540,5560,5560,5560,5620,6880,12960,13120,13140,13180,13140,13160,13160,13200,16560,19940,20140,20120,20240,20200,20220,20180,20200,20200,20220,20140,20200,20160,20240,20220,20200,20200,20180,20160,20200,20240,20200,20220,20220,20240,20220,20240,20300,20540,20520,20580,20580,20580,20560,20600,20620,20680,20560,20560,20460,20340,20280,20300,20280,20280,20280,20260,20800,28000,31500,31700,31700,31720,31660,31680,31700,32140,38500,42620,42620,42620,42400,42360,42340,42200,42260,43060,47160,51660,52320,52060,52420,52600,52420,52160,52180,52220,52240,52320,52780,52200,52320,52400,52380,52180,52460,52420,52360,52380,52340,52400,52360,52380,52360,52380,52360";
string[] inputsplit = inputstr.Split(new char[] { ',' });
double[] inputdouble=new double[inputsplit.Length];//重量数据流
for (int i = 0; i < inputsplit.Length; i++)
{
inputdouble[i] = Convert.ToDouble(inputsplit[i]);
}
double[] rate = new double[inputsplit.Length]; //变化率数据流,时间单位为1
int[] signal = new int[inputdouble.Length]; //阀值量化信号数据流
for (int i = 1; i < inputdouble.Length; i++)
{
rate[i] = inputdouble[i] - inputdouble[i - 1];
if (rate[i] > a)
signal[i] = 1;
else if (rate[i] < b)
signal[i] = -1;
else
signal[i] = 0;
}
int bit = 0;
List <int> index = new List <int>();
for (int i = 1; i < inputdouble.Length; i++)
{
if (bit == 0 && signal[i] == 1)
{
bit = 1;
index.Add(i - 1); //轮组开始进入时的inputdouble下标
}
if (bit == 1 && signal[i] == 0)
{
bit = 0;
index.Add(i); //轮组稳定时的inputdouble下标
}
}
index.Add(inputdouble.Length-1); //因为你原始数据并不是整个过程,而是轮组进入的数据流,为了处理方便,记录最后一个数据的下标
for (int i = 2; i < index.Count; i=i+2)
{
double avg = 0;
for (int j = index[i - 1]; j <= index[i]; j++)
avg = avg + inputdouble[j];
avg=avg/(index[i]-index[i-1]+1); //取得重平均值
Console.Write(((int)avg).ToString()+",");
}
}
x[i]= x1,x2....xi
b[i]= (x1-0) * 10/x1, (x2-x1) * 10/x2,... ...,(xi-xi-1)/xi。注xi为0时 bi=1
c[i]= |bi - 10| / n ; 注n为一个常量,例n可表示为max(x) 的10% 或者
此时得到的c数据应为 0,0,0,0,1,1,1,1,1,3,3,3,3,3,555555555,66666666666
判断不同值个数。算法优化
1、b[i]的取得,例如 bi = (xi+1 + xi-1)/(xi * 2)等
2、n的取值情况,
3、c[i]的取得情况,例如c[i] = [bi+1 + bi + bi-1 - 30]/n
c[i]= |bi - 10| / n ; 注n为一个常量,例n可表示为max(x) 的10% 或者为什么是10这个参数?
啊哈!伙计明白人!!协商神马的就没有见过!伙计有发我看看!我一般是使用串口调试程序截数据自己分析![email protected]