//导入库import com.matlab; //创建 MATLAB 运用var m = com.matlab(true); //调用 MATLAB 任意函数,例如 strcatvar r = m.strcat("hello",",world" )
m. 后面可以输入任意 MATLAB 函数名。
如果第一个参数是数值,则用于指定返回值的个数,例如:
import com.matlab; var m = com.matlab(true); //调用 MATLAB 函数,有 3 个返回值var d,f,e = m.fileparts(3,"c:\aardio\matlab.m" );
二、在 aardio 中读写 MATLAB 事情区变量。
MATLAB 的『事情区』有点像其他措辞的变量『命名空间』或者『模块』,用于隔离变量浸染域。
除了函数有独立的匿名事情区以外,还有 base 与 global 事情区。global 是全局变量事情区,而 base 根本事情区用于存储命令语句创建的变量。
aardio 读写 MATLAB 变量示例:
import com.matlab; var m = com.matlab(true); //读写 base 事情区的变量m.base.varname = "测试字符串,base 事情区。";//读写 globa 事情区的变量m.global.varname = "global 事情区"; //批量写入变量到事情区m.base.assign({ var1 = 1; var2 = 2; var3 = 3;})
三、在 aardio 中实行 MATLAB 命令。
在 aardio 中实行 MATLAB 命令:
import com.matlab; var m = com.matlab(true); //实行绘图命令m.exec("plot(1:10)");
也可以用 code 属性赋值并实行命令,支持用模板语句嵌入 aardio 代码或 aardio 工具,示例:
import com.matlab; var m = com.matlab(true); //实行命令m.code = /var5 = <? //在 MATLAB 代码中直接写 aardio 代码。 ={ 1,2,3 }?>/
在 <? 与 ?> 标记中的是 aardio 代码。
<? //在 MATLAB 代码中直接写 aardio 代码。 ={ 1,2,3 }?>
上面的等号后写的便是 aardio 表达式,这个很大略,可以看看 aardio 语法文档。
四、进阶用法
可以在 aardio 下标中直接打算 MATLAB 表达式,示例:
import com.matlab; var m = com.matlab(true); //解析下标中的 MATLAB 表达式。var data = m[`{'one'; 'two'; 'three'}`]
在 aardio 中读写 MATLAB 矩阵:
import console.int;import com.matlab; var m = com.matlab(true); //写入矩阵到 base 事情区m.base.putMatrix("B" , { {1,2}, {3,4} } , { {1,0}, {0,2} });//自 base 事情区读取矩阵 var realPart,imagPart = m.base.getMatrix("B"); //回显结果console.dumpJson(realPart );console.dumpJson(imagPart );
五、在 aardio 窗口显示 MATLAB 绘图。
完全示例:
import win.ui;/DSG{{/var winform = win.form(text="aardio 窗口显示 MATLAB 绘图";right=759;bottom=469;border="dialog frame";max=false;min=false)winform.add(button={cls="button";text="点这里调用 MATLAB 绘图";left=472;top=414;right=680;bottom=456;z=2};plus={cls="plus";left=18;top=15;right=739;bottom=397;bgcolor=16777215;z=1})/}}/import com.matlab; var m = com.matlab(true); winform.button.oncommand = function(id,event){ //设置绘图变量 m.base.assign({ filename = ..io.fullpath('/m.png'); amplitude = 1; frequency = 1; phase = 0; }); m.code = / x = linspace(0, 2pi, 100); y = amplitude sin(frequency x + phase); figure('Visible', 'off'); plot(x, y, 'LineWidth', 2); title('Sine Wave'); xlabel('X Axis'); ylabel('Y Axis'); grid on; set(gcf, 'Color', 'w'); saveas(gcf, filename); close(gcf); / winform.plus.background = string.load("/m.png");}winform.show();win.loopMessage();
运行效果:
六、在 MATLAB 中调用 aardio 创建的 ActiveX 控件。
MATLAB 代码:
% MATLAB 创建 COM 工具sample = actxserver('aardioTestControl.Sample');% 调用Add方法num = sample.Invoke("Add",1,3)% 显示结果disp(num);% 设置属性sample.SetAttr("key", 'value2')% 读取属性sample.GetAttr("key")% 设置属性set(sample, 'key', 'value'); % 读取属性value = get(sample, 'key');
目前 aardio 已经支持以各种形式调用 C措辞、C++、C#、Go 措辞、Python、Rust、JavaScript、Node.js、Java、Delphi、Fortran、Julia、R、PHP、VBA、JSA、VB、VBScript、FreeBasic、Ruby、PHP、Nim、V 、PowerShell、批处理、汇编等编程措辞或这些措辞编写的组件。
当然,能做什么不是必须做什么。
大部分 aardio 程序还都因此纯 aardio 代码编写的。