ITPub博客

首页 > IT职业 > IT生活 > 经历Origin (转)

经历Origin (转)

原创 IT生活 作者:amyz 时间:2007-11-26 16:50:16 0 删除 编辑
经历Origin (转)[@more@]

我最近帮别人做了一个小软件,主要是用Origin C来实现Origin的成批处理数据的功能,我原先没用过Origin这个工具,一用才发觉它挺好用的,特别是手头有一些实验数据想用它分析、统计用来写论文什么的特方便。这里重点介绍一下我用的技术。

先做一个简单介绍:

Origin是美国Microcal公司出的数据分析和绘图软件,现在的最高版本为7.0 http://www.originlab.com/

特点:使用简单,采用直观的、图形化的、面向对象的窗口菜单和工具栏操作,全面支持鼠标右键、支持拖方式绘图等。

两大类功能:数据分析和绘图。数据分析包括数据的排序、调整、计算、统计、频谱变换、曲线拟合等各种完善的数学分析功能。准备好数据后,进行数据分析时,只需选择所要分析的数据,然后再选择响应的菜单命令就可.Origin的绘图是基于模板的,Origin本身提供了几十种二维和三维绘图模板而且允许用户自己定制模板.绘图时,只要选择所需要的模版就行。用户可以自定义数学函数、图形样式和绘图模板;可以和各种数据库软件、办公软件、图像处理软件等方便的连接;可以用C等高级语言编写数据分析程序,还可以用内置的Lab Talk语言编程等。

  对于其它基础方面,请到网上去搜索。我要做的是将某一目录(含子目录和文件)下的数据文件成批生成Origin工程文件,并根据数据绘图。

因为:

1.  使用Origin C和LabTalk混合编程实现成目录下文件自动枚举和数据成批处理。Origin C擅长于逻辑处理,LabTalk擅长于Origin7的内置操作。

2.  用户只要输入要处理数据的目录,程序成批处理生成按照要求命名的.OPJ文件置于相应目录下。

void ImportAndPlot(string strFile)//处理数据,传入文件全路径名,绘图处理

{

  string cmd = strFile;

  int pos = strFile.ReverseFind('');

  string wks;

  string path = strFile.Mid(0,pos+1);

  cmd.Insert(0,"open -w ");

  LT_execute(cmd);//执行LabTalk操作,后同。

  double nCols;

  LT_get_var("wks.nCols",&nCols);

  char  szTemp[100];

  LT_get_str("%H", szTemp, 100);

  wks = szTemp;

  LT_execute("win -t plot line");

  for(int i = 2; i <= nCols; i++)

  {

    cmd.Format("%%B=%s!wks.col$(%d).name$",wks,i);

    LT_execute(cmd);

    cmd.Format("layer -i %s_%%B",wks);

    LT_execute(cmd);

    LT_execute("layer -a");

    cmd.Format("%%B=%s!wks.col$(%d).label$",wks,i);

    LT_execute(cmd);

  char  szTemp[100];

    LT_get_str("%B", szTemp, 100);

  string str(szTemp);

  pos = str.ReverseFind('(');

    str.Delete(pos,str.GetLength()-pos);

    cmd.Format("save %s%s.OPJ",path,str);

    LT_execute(cmd);

  }

  LT_execute("doc -n");

}

void dir(string strFile)//遍历指定目录下所有文件并调用数据处理函数ImportAndPlot

{

  win32_FIND_DATAA  find;

  HANDLE  hFile;

  string strFolder;

  if((hFile=FindFirstFile(strFile,&find)) != INVALID_HANDLE_VALUE)

  {

    while(FindNextFile(hFile,&find))

  {

    strFolder = strFile;

    strFolder.Delete(strFolder.GetLength()-3,3); 

    strFolder.Insert(strFolder.GetLength(),find.cFileName);

    if(strFolder.Right(4).CompareNoCase(".txt") == 0)

  {

    ImportAndPlot(strFolder);//处理txt文件

  }

    else if(strFolder.Find('.') == -1)//(子)文件夹,继续遍历

  {

    strFolder.Insert(strFolder.GetLength(),"*.*");

    dir(strFolder);

  }

  }

    FindClose(hFile);

  }

  else

    printf("%s: file(s) not foundn",strFile);

}

 XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

void test()

{

  string strFile = InputBox("请输入(或拷贝)要处理的数据目录全路径:");

  strFile += "*.*";

  dir(strFile);

}

使用说明:

1.  将上述文件保存为h.c

2.  再将h.c拷到Origin程序的OriginLabOriginPro70OriginC下。

3.  将Custom.OGS覆盖Origin程序的OriginLabOriginPro70目录下的Custom.OGS。

4.  启动Origin7软件,点击工具栏上的“Custom Routine”按钮。

5.  在弹出的输入框中输入要处理数据的目录,然后点击OK,等待计算机成批处理。

当然还可以用其它方式调用该程序,读者自己去研究,这里不介绍了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752019/viewspace-984977/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    3984
  • 访问量
    7363313