主要内容

codegen

生成MATLAB代码可调增益的表面

描述

例子

代码= codegen (GS)MATLAB生成®代码的可调的表面GS。生成的代码是一个函数,接受调度变量的标量值,并返回纯量值或矩阵值获得,取决于GS

例子

全部折叠

创建一个可调的表面,代表着一个标量获得双线性对两个调度变量的依赖。假设调度变量α,从0-15度,V,从300 - 600 m / s。线性可调表面覆盖的网格在这个工作范围。

(α,V) = ndgrid (0:3:15,300:50:600);域=结构(“α”α,“V”,V);shapefcn = @ (x, y) (x, y, x * y);GS0 = tunableSurface (“K”1域shapefcn);

通常,您可以使用GS0参数化计划获得和调优与systune表面系数。对于这个示例,而手工调优,将系数设置为非零值。

GS = setData (GS0(100年,28岁,40岁,10]);

生成MATLAB代码计算标量增益调度变量的函数。

代码= codegen (GS)
代码= '函数Gain_ = fcn (alpha_ V_) % # codegen %类型铸造0 = 0(1,1,“喜欢”,alpha_ + V_);alpha_ =投(alpha_,“喜欢”,零);V_ =投(V_,“喜欢”,零);%调增益表面系数多项式系数=投([100 28 40 10],“喜欢”,零);偏移量=投([450 - 7.5],“喜欢”,零);落下的石块=投([150 - 7.5],“喜欢”,零);%正常化alpha_ = (alpha_ -补偿(1))/落下的石块(1);V_ = (V_ -补偿(2))/落下的石块(2);%计算加权和的术语Y = [alpha_、V_ alpha_ * V_];Gain_ =多项式系数(1); for i=1:numel(Y) Gain_ = Gain_ + Coeffs(i+1) * Y(i); end '

生成的代码是一个函数,fcn,这需要两个调度变量并返回一个标量。功能包括% # codegen指令,可以用于进一步的代码生成,如实现调谐获得硬件的时间表。

功能包括四个部分。第一部分确保调度变量是相同的类型。第二部分编码增益系数和偏移和落下的石块,软件的摘录GS。这些值硬编码fcn,可以计算得到表面没有提及G年代。第三部分使用这些值来计算归一化调度变量。(见tunableSurface关于标准化的更多信息)。

最后一节计算得到总结的所有条款多项式表面获得的表达式。

输入参数

全部折叠

可调增益表面,指定为一个tunableSurface对象。

输出参数

全部折叠

为获得表面生成的代码,作为一个字符数组返回。代码包含一个函数,Gain_ = fcn (xN_ x1_, x2_,…)从调度变量,计算获得x1_ x2_,…, xN_GS。表达式相关的增益调度变量、表达式的系数,调度变量的标准化都来自GS,代码可以运行没有进一步的参考TS。包括返回的函数% # codegen指令,以便它可以用于进一步的代码生成,如实现调谐获得硬件的时间表。

当你使用writeBlockValue从一个写调谐gain-surface系数slTuner接口MATLAB函数块,它使用MATLAB代码生成。

版本历史

介绍了R2017b