一条不规则闭合曲线的识别方法?
在油田行业对抽油机的做功情况进行测试,得到一条闭合曲线来显示井的做功情况,理论情况是一个平行四边形的闭合曲线, 但往常绘制的曲线是一条不规则的闭合曲线.
行业对井的不同总结了几十种不同的闭合曲线,作为标准与所采的曲线进行比对得出当前井的井况.
请问,用什么方法实现对采集到的不规则闭合曲线和行业总结曲线进行比对判断, 近似的判定当前曲线属于哪种井况.
本人对模式识别不甚了解,求解决方法?
"汉字识别 "方法是否与我这曲线识别有相同之处!
------解决方案--------------------这个难度比较大,可以试试每个点到行业总结曲线的最短距离的平方和,平方和最小的可以近似认为相同。
虽然一句话,做起来恐怕还是不容易。
------解决方案--------------------我没看懂,能不能更详细一些。
如果仅仅是判断图形的相似性,这个会比较难。
最好不要做图形的相似性处理,对于人来说,转换为图形相似性进行判断是合理的,对于计算机来说是不合适的,最好把问题转换为其他形式来处理。
如果是做功情况,简单来说,应当是随时间的变化的量吧,处理一维的相似性还是容易的,有很多的办法,最主要的是频谱分析,用富丽叶变化后,如果相似(按照人类的相似性感官而言的)的话,那么一般在低频(低级数)上会一致,在高频不一致,比较容易判断的,还有其它的变换分析法。
特征抽取的最根本的思想是:把一群难以穷尽的量用某种方法简化,归类到可枚举的有限集合中。
------解决方案--------------------using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
//三个样本
double[] T1 = new double[] { 90d, 45d, 45d };
double[] T2 = new double[] { 120d, 30d, 30d };
double[] T3 = new double[] { 60d, 60d, 60d };
//取样图
double[] t = new double[] { 92d, 46d, 46d };
//比较余弦值,T1=1,与T1最接近
writeCos(t, T1);
writeCos(t, T2);
writeCos(t, T3);
//比较余弦值,T3=1,与T3最接近
t = new double[] { 60d, 60d, 60d };
writeCos(t, T1);
writeCos(t, T2);
writeCos(t, T3);
//比较余弦值,T2=0.99,与T3最接近
t = new double[] { 122d, 29d, 29d };
writeCos(t, T1);
writeCos(t, T2);
writeCos(t, T3);
Console.Read();
}
/// <summary>
/// 问候
/// </summary>
/// <returns> 问候语 </returns>
static void writeCos(double[] t1,double[] t2)
{
double cos = (t1[0] * t2[0] + t1[1] * t2[1] + t1[2] * t2[2]) / (Math.Pow(t1[0] * t1[0] + t1[1] * t1[1] + t1[2] * t1[2], 0.5) * Math.Pow(t2[0] * t2[0] + t2[1] * t2[1] + t2[2] * t2[2], 0.5));
Console.WriteLine(cos);
}
}
}