MATLAB TLC语言
TLC
Target Language Compiler,目标语言编译器[text | %]*
% text表示字符串,将原原本本的展开到输出流。在%<>之中的是TLC变量,通过%<>作用将变量的执行结果显示到输出流
%keyword[argement1, argument2,...]
%kewword表示TLC语言中的命令符,[argument1, argument2,...]中则表示这个命令符所操作的参数
赋值
%assign Str = "Hello World";
% %assign表示其后的语句是对变量赋值
输出信息
%warning,%error,%trace命令,可以将其后所跟变量或字符串的内容输出
%error命令只是在输出内容前自动增加error,并非warning的字样,并且会给出TLC报错信息
% 使用%trace命令代替%warning命令显示信息,在执行TLC文件时需要增加-v或-vl才能将%trace的命令给显示出来
执行
运行TLC,在命令行输入:tlc xxxx.tlc
宏定义
% TLC语言有两个内建宏TLC_TRUE = 1和TLC_FALSE = 0,在TLC语言的编写中会经常遇到
注释
%%注释
/%块注释%/
变量内容扩展(使用变量到输出流中)
%warning % + % = %
条件
%if
%else
%end
开关
%switch
%case
%break
%default
%break
%endswitch
循环
%foreach loopindex = iternum
XXXXX
%endforeach
//如果exp2为非零,则只执行一遍,并且对str赋值
//如果exp2为0,则执行exp1的次数,不进行赋值并且只执行%body和%endbody之间的部分
%for exp1, exp2, str = exp3
Coder section 1
%body
Coder section 2
%endbody
Coder section 3
%endfor
多维数据循环
%assign rollvars = ["U","Y","P"] //U:输入端口,Y:输出端口,P:模块参数
%roll sigindex = rollregions, lcv = rollthreshold,block,“Roller”,rollvars
//rollregions是自动计算出来的模块输入、输出或参数的维数向量
// rollthreshold表示当信号维数小于此数时不生成for循环,默认为5
%assign y = LibBlockOutputSignal(0,“”,lcv,sigindex)
%assign u = LibBlockOutputSignal(0,“”,lcv,sigindex)
%%endroll
文件流
%openfile buffer = “my_flow_control.txt” a/w //a:追加,w:重写
%selectfile buffer
aaaaaaaaa //会将这串文本输入到txt文件中
%closefile buffer
记录
相当于结构体
创建记录
%createrecord record{
foo1;
sunrecord{
foo2
}
}
追加记录
%addtorecord record str “i love simulink”
合并记录
%mergerecord record1 record2
拷贝记录
%copyrecord newrecord1 oldrecord1
删除记录
可删除TLC变量、记录、记录中的域(用%with和%endwith进行范围指定)
%with record
%undef foo1
%endwith
变量清除
使用undef
语句换行连接(字符串中不可使用)
C语言:换行连接符\
TLC:...
输入文件控制
%include string //搜索路径下寻找名为string的文件
%addincludepath string //添加搜索路径
搜索顺序
1、当前路径
2、所有的%addincludepath路径,依照从下到上
3、命令行中通过-I命令添加的路径
输出格式控制
使用16为精度的指数显示
%realformat “EXPONENTIAL”
无精度损失和最小字符数格式(为s函数提供生成代码功能的模块级TLC)
%realformat “EXPONENTIAL”
指定语言种类
%language "C"
%implements “Block-Type” “Language”
//Block-Type:模块的S函数名
//Language:语言种类
%implements Interupts “C”
函数
%function name(optinal - arguments) void
%return
%endfunction
SIMULINK模块和TLC联系
%generatefile “Type” “blockwise.tlc”
//Type:rtw文件中模块的记录中Type参数的值,也即模块blocktype属性
%generatefile “Sin” “Sin_wave.tlc”
断言
%assert expression
expression == TLC_FALSE,TLC将进行堆栈追踪
数据转换
%CAST(“数据类型”,variablename)
存在
%EXISTS(Var)
记录域操作
%ISFIELD 是否为记录域
%SETFIELD 设置
%GETFIELD 获取
%REMOVEFIELD 移除
相等
%ISEQUAL
空值
%ISEMPTY
类型
%TYPE(var)
空格
仅仅空格:\n,\t,\r
%WHITE_SPACE(var)
调用matlab函数
有返回值:%assign res = FEVAL("disp",“aaaaa”),只能接收首个返回值
无返回值:%matlab disp("aaaaa")