r语言 调用matlab,C#通过批处理来调用Matlab和R语言 为什么格式会乱七八糟???...

一,批处理Matlab Step1.编写temp.m例子程序在D盘根目录下,功能将传入的参数写到D:\\Data.txt文件里 function A=temp(n, m) fid=fopen('D:\\Data.txt','a+'); fprintf(fid,'%d',n); fprintf(fid,'%d',m); fprintf(fid,'Hello,Tim\r\n'); fclose(fid) Step2:编写Matlab命令D:\\run.bat,功能调用运行temp.m文件matlab -nojvm -nodesktop -nosplash -r cd('d:\');temp(1,2)大家一眼就应该看明白格式意义Step3.编写C#调用.bat,运行即可看到D:\\Data.txt文件的生成,查看内部应该有12内容 using System.Text; using System.Threading.Tasks; using System.Diagnostics; namespace CSharpMatlab {     class Program     {         static void Main(string[] args)         {             string appName = "D:\\run.bat";//path             Process proc = Process.Start(appName);             proc.WaitForExit();         }     } } 二,批处理R语言Step1:编写.R示例程序Kriging.R,意思就是输出所有的传入变量 Args 1.txt代表输出文件 ;--args代表后面跟的是参数; 带%夹着的是变量,不带的是字符串变量 set FolderPathForPM25=%~dp0PM25 set RegionId=001 set startTime=2013-01-01 set endTime=2013-10-20 set stationNumber=22 set SavePathForPM25=%~dp0Rout\PM25 R --slave 1.txt --args %RegionId% %stationNumber% %startTime% %endTime% %FolderPathForPM25% %SavePathForPM25% PM25 Lin Step3:把两个文件放在一个目录下,手动或程序运行.bat,有问题cyb3727@gmail.com 三,注意1.R和Matlab你得先装好吧,这是第一点。2.环境变量Path得设置。检验很简单,在cmd.exe分别输入matlab和R看有无反应,提示没有这个命令,自个加上。不用bat直接cmd:http://www.legalsoft.com.cn/docs/838.html 四.关于程序同步问题 这种批处理传递参数肯定是: 输入:直接写字符串或者传递文件路径 输出:写文件 异步实现: 1.cmd中的命令都是异步的 2.Process Start后肯定是异步的 同步实现: 1.写成.bat,对于普通应用程序Process WaitForExit就会等待现成结束才会继续执行 2.对于需要中间进程实现执行的进程,如我们是启动matlab应用程序去执行.m文件,这时候即使写成.bat,Process WaitForExit,C#也不会等待.m进程结束才执行, 原因很好理解。这个Process不是.m那个process,那么我们如何实现进程同步呢? 方法很简单,但是很通用:所有的文件输出写成一个temp.txt,在文件写完之后修改文件名为如:output.txt,那么C#应用程序只需要判断是否存在output.txt这个程序 就行,有就可以继续往下执行了。但让对于轻量级频繁输出,这个方法就不好了,因为这样频繁文件读写速度堪忧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值