matlab feval()函数问题我在研究一个matlab写的F16模型,遇到这样一条语句:feval('F16_trim',[],[],[],'lincompile');其中,F16_trim是一个mdl模型文件,是描述F16模型的simulink框图,feval函数的帮助里

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/30 14:30:24
matlab feval()函数问题我在研究一个matlab写的F16模型,遇到这样一条语句:feval('F16_trim',[],[],[],'lincompile');其中,F16_trim是一个mdl模型文件,是描述F16模型的simulink框图,feval函数的帮助里

matlab feval()函数问题我在研究一个matlab写的F16模型,遇到这样一条语句:feval('F16_trim',[],[],[],'lincompile');其中,F16_trim是一个mdl模型文件,是描述F16模型的simulink框图,feval函数的帮助里
matlab feval()函数问题
我在研究一个matlab写的F16模型,遇到这样一条语句:feval('F16_trim',[],[],[],'lincompile');
其中,F16_trim是一个mdl模型文件,是描述F16模型的simulink框图,feval函数的帮助里面没有讲如何调用模型文件,我搞不明白里面的三个空白输入是干什么的,而最后一个linecompile又是干什么的?在程序结尾的时候,还调用了一个feval('F16_trim',[],[],[],'term');这个里面的term又是干什么的呢?

                               F16_trim.mdl

matlab feval()函数问题我在研究一个matlab写的F16模型,遇到这样一条语句:feval('F16_trim',[],[],[],'lincompile');其中,F16_trim是一个mdl模型文件,是描述F16模型的simulink框图,feval函数的帮助里

楼上两位的回答完全不着边际.

 

其实楼主的问题涉及到的是Simulink模型的未公开API.这方面的有用信息很少,在网上我唯一找到的是MathWorks公司的一位员工Rick Spada在其官方的Newsreader上回复一个提问时说到这个话题.那是2000年11月的事,距今已经14年.

 

当时有人问一个关于“Finding simulink vector widths”的问题,Rick在答复时说到了显式编译(explicit compilation)这个术语,提到类似下面的用法:

   modelName([],[],[],'compile') % compile a model
   modelName([],[],[],'term') % terminate compilation

称之为mdl-api,也就是模型的API.

 

然后有人问哪里有关于explicit compilation的文档,或者这些属于undocumented feature?Rick回答说没有相关的文档,而且他们一般不公开谈论这些问题.但这位老兄真是很厚道,针对有人问起除compile、term之外还有没有其它参数,他还提供了下列信息:

   'sizes' % return the sizes vector
   'compile' % compile the model
   'lincompile' % compile the model for linearization (used by linmod)
   'outputs' % return the model outputs
   'update' % compute the model update (e.g., discrete states)
   'derivs' % return the derivatives
   'term' % uncompile
   'load' % load the model (doesn't make it visible, see load_system.m

For the 'outputs', 'update', and 'derivs' commands, you need to supply values for the first three inputs:

    lhs = model(t, x, u, command)

will return the outputs at time t, with states x, and input u.

以上就是目前我能找到的关于此话题的有价值的全部信息.

 

总结几点(有个人理解的成分,请自行斟酌):

 

1、关于【feval函数的帮助里面没有讲如何调用模型文件】.文档里面的说法是:

[y1, y2, ...] = feval(function, x1, ..., xn). If function is a quoted string containing the name of a function (usually defined by an M-file), then feval(function, x1, ..., xn) evaluates that function at the given arguments.

只是说函数通常用M文件定义,但不排除其它文件类型.所以,当feval的第一个参数是字符串的时候,调用mdl文件也不算奇怪(事实上,mdl文件的优先级高于m文件,如果有同名m和mdl文件,会调用mdl文件).

 

2、关于【里面的三个空白输入是干什么的,而最后一个linecompile又是干什么的?在程序结尾的时候,还调用了一个feval('F16_trim', [], [], [], 'term');这个里面的term又是干什么的呢?】相信看完上面Rick的答复,应该可以解决这两个问题了吧?

 

3、鉴于这些API属于未公开的,要想真正很深入地了解还是有一点难度的.我查了一下,许多函数(如linmod2、linmodv5、dlinmod、dlinmodv5、trim等)里面都有类似的调用.读一下这些函数也许会有启发.

 

4、如果对Rick的原帖感兴趣,抱歉,由于担心度娘抽风,我不敢贴链接.可以在MathWorks官网地址后面加matlabcentral/newsreader/view_thread/19913即可访问.或者搜索“Finding simulink vector widths”,但注意用谷歌,不要用度娘.度娘在这方面就是一弱智.

matlab feval()函数问题我在研究一个matlab写的F16模型,遇到这样一条语句:feval('F16_trim',[],[],[],'lincompile');其中,F16_trim是一个mdl模型文件,是描述F16模型的simulink框图,feval函数的帮助里 MATLAB中 feval 函数的用法 给个简单的例子就可以 不要matlab中feval的英文,因为已经看过了,看不太明白 matlab中的feval函数怎么用希望举一个简单的例子 fortran 中有类似于 matlab 中feval计算表达式的函数么? 在线等matlab二分法函数程序,要求:函数体中不使用feval函数如题,求高手指导. matlab中feval的具体用法 用matlab的minsearch求二元函数的最值点问题假设f是关于a,b的二元函数,a,b得取值范围都是[-4,5],用fminsearch求最值时总是出现“If FUN is a MATLAB object,it must have an feval method.”的错误提示.并附上正确 matlab符号表达式求解:syms x y; m=x+y+1; x=[1 2 3]; y=[4 5 6]; 请问怎么求m向量?有没有一个函数可以直接求出向量m的值,例如pp=feval(m,a,b)?syms a bf(a,b)=a+b+1;a=[1 2 3];b=[4 5 6];p=f(a,b);%或者p=feval(f,a,b);问题已 matlab 中怎么求求多元函数值,有专门的函数?像一元函数给出一个x值通过feval可求,多元的呢?有一个通用的吗? 请教一个MATLAB解非线性规划的问题我的程序是clc; clear all; close all;function feval=myfun(x)feval=x(1)^2+x(2)^2;fuction [c,ceq]=cons_fun(x)c(1)=x(1)^2+x(2)^2-5;ceq=[];A=[];b=[];Aeq=[1,2];beq=[4];lb=[0 0];ub=[];x0=[0;0];options=optims matlab编程,帮我看看哪里有问题function [RT,R,wugu,h]=romberg(fun,a,b,wucha,m)n=1;h=b-a;wugu=1;x-a;k=0;RT=zeros(4,4);>> syms a;>> syms b;>> syms x;>> n=1;h=b-a;wugu=1;x=a;k=0;RT=zeros(4,4);>> RT(1,1)=h*(feval(fun,a)+feval(fun,b))/2;RT( matlab!Input argument f is undefined.Error in ==> agui_bisect at 3 fa=feval(f,a);function x=agui_bisect(f,a,b,e)fa=feval(f,a);fb=feval(f,b);if fa*fb>0error('两端函数值为同号');endk=0x=(a+b)/2while(b-a)>(2*e)fx=feval(f,x);if fa*fx MATLAB中的feval 使用[d,cgIT,solutionOnBound] = feval(trsSolver,g,H,delta,tol) 应该怎样修改呢? 关于数值计算之误差计算的matlab实验定义函数程序如下:function f=f(x)f=x.^3-log(2.*x)+1./x定义一阶导数第一种算法函数dsh1为:function y=dsh1(fu,x,h)y=(feval(fu,x+h)-feval(fu,x))/h;y;然后运行之后得到的是: 使用matlab编写好梯形公式的函数M文件后如何使用它去计算积分?已知复化梯形公式M文件:function y=trap(‘f’,a,b,n)h=(b-a)/n;k=n-1;sum=0;for i=1:ksum=sum+feval(f,a+i*h);endy=h/2*( feval (f,a)+2*sum+ feval (f,b)); sin/x求定积分,x从1到5我用matlab编写程序求解过程如下,fun=@(x)sin(x)/x;a=1;b=5;epsilon=1e-5;n=1;h=(b-a)/2;y0=h*(feval(fun,a)+feval(fun,b));yiter=y0;while 1f=sum(feval(fun,a+(1:2:5*n-1)*h));y=y0/2+h*f;if abs(y-y0) 大神帮下我这小白MATLAB求函数导数及绘导函数图的问题 matlab函数求值问题 急``函数是这样的 我刚学都不怎么会.