首页 > 编程知识 正文

matlab画图与origin哪个好,origin可以拟合曲线吗

时间:2023-05-03 21:13:31 阅读:36081 作者:4646

用Matlab创建的图通常看起来不像用Origin创建的图。 另外,导出为eps或emf格式会有各种奇怪的错误。 目前一种常用的方法是将Matlab数据导出到mat文件,然后导入到Origin进行手工绘制,这种方法需要大量的重复工作,并不是一个完美的解决方案。

不久前,偶然看到Origin提供了用于从Matlab调用的COM接口,研究了能否从Matlab调用Origin生成所需的emf格式的图像,最终费了很大的力气,基本上实现了这个目标。

在Matlab中调用Origin取决于Origin提供的自动

服务器服务。 该服务提供了其他程序调用的COM接口,官方提供了Matlab、VB、Excel、C#、LabVIEW等多个程序调用Origin的例子。 自动驾驶仪

有关如何使用服务器的详细说明,请参阅官方帮助文档。

Matlab调用Origin的示例程序位于 samplescomserverandclientMATLAB路径下(

以2015为例,其他版本的位置可能不同)。 有两个文件: CreatePlotInOrigin.m和MATLABCallOrigin.m,演示如何调用Origin图形并将结果保存到剪贴板、如何创建工作表以及如何插入新列。 另一个CreatePlotInOrigin.opj文件是CreatePlotInOrigin.m调用的Origin模板文件。

基于这两个示例程序,基本上可以按葫芦瓢编写符合自己要求的程序,但其中没有导出emf格式图像的例子,于是开始研究官方帮助文档……官方帮助文档在很多地方语言不通,其间也同样如此比如上一篇文章那样。 但是,最终找到了正确的解决方案。 就是使用Origin

最终找到的好解决方案如下。

首先,使用Origin生成包含基本工作表结构和Graph样式(如示例文件中提供的)的空白模板项目。

在此模板项目中,您只需在Worksheet中输入数据,就可以确保生成Graph所需的图,如下所示:

这里的Worksheet和Graph可以不止一个,但一般一个就足够了。

创建模板文件后,只需用Matlab程序从COM界面中调用Origin,打开此模板文件,在其中的Worksheet中填写正确的数据,最后导出图像文件即可。

Matlab程序如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

调用Origin绘图并将其另存为emf格式的图像

%作者: wmdmj

%第: 2016-01-27天

% mdata :必须在原始工作表上输入数据

必须将% template : Origin模板函数名称、无后缀和“CreatePlotInOrigin”保存在当前工作目录中

% fdir :输出图像输出目标文件夹,如“D:image”

% fname :输出图像文件名,不带后缀,如“abc”

functionoriginplot (元数据、模板、fdir、fname ) )。

% Obtain Origin COM Server object

% thiswillconnecttoanexistinginstanceoforigin,or create a new one if none exist

origin obj=a CTX server (origin.applicationsi );

% clear ' dirty ' flaginorigintosuppresspromptforsavingcurrentproject

invoke(Originobj,' IsModified ',' false ' );

% load the自定义模板项目

dir=pwd;

dir=strcat(dir,'',template,'.opj ' );

invoke(Originobj,' Load ',dir );

% sendthisdataovertothedata1worksheet

invoke(Originobj,' PutWorksheet ',' Data1 ',mdata );

% Save graph

cmd=' expgraphtype :=emf overwrite :=rename tr1. unit :=2tr1. width :=10000 path :=' ';

cmd=strcat(cmd,fdir,' ' filename:=',fname,'.emf ' ); ();

invoke(Originobj、' Execute '、cmd );

% Release

release(Originobj );

结束

在上述步骤中,Worksheet的名称必须为Data1。 这是根据invoke(Originobj,' PutWorksheet ',' Data1 ),

mdata; 这个代码确定了;

导出的图像为emf格式,图像宽度为10000像素。 这是向量图像,所以文件的体积不大。

以上版本是最基本的版本,但普通使用也足够了。 使用动态调整坐标轴的名称、动态调整x、y轴的范围以适应不同的数据等更多高级功能后再研究吧……

文章作者:wmdmj

发布时间:2016-01-28、2133602:24

最后更新:2018-01-21、17:28:52

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。