matlab function :

function [xdot, U] = fcn(x,n,mp,rp,V_c,beta_c)
[xdot,U] = otter(x,n,mp,rp,V_c,beta_c);
end

1、现象-----运行程序出现下面错误:

2、原因:
simulink代码生成的过程中,有些函数是不支持内部代码生成的,需要将其定义为外部函数,使用coder.extrinsic声明一下即可,详细的你可以参考一下matlab的帮助文档doc coder.extrinsic外部函数

添加下面代码:

coder.extrinsic('otter');

3、继续运行,前面错误已经没有了,又报下面错误:

Function output 'Xdot' cannot be an mxArray in this context. Consider preinitializing the output variable  with a known type

4、错误提示的很明显了,参数的类型问题,从3中的外部函数文档里面可以找到:

使用 mxArray
外部函数的输出是一个 mxArray - 也称为 MATLAB 数组。对 mxArrays 有效的操作只有下列几个:

  • 将 mxArrays 存储在变量中
  • 将 mxArrays 传递给函数,并从函数中返回它们
  • 在运行时将 mxArrays 转换为已知类型

要在其他操作中使用外部函数返回的 mxArrays,必须先将它们转换为已知类型,如将 mxArray 转换为已知类型中所述。

将 mxArray 转换为已知类型
要将 mxArray 转换为已知类型,请将 mxArray 指定给已定义类型的变量。在运行时,mxArray 将被转换为其指定给的变量的类型。但是,如果 mxArray 中的数据与该变量的类型不一致,将会发生运行时错误。

以如下代码为例:

function y = foo %#codegen
coder.extrinsic('rat');
[N D] = rat(pi);
y = min(N, D);

这里,顶层函数 foo 调用外部函数 rat,后者返回两个 mxArrays,分别代表 pi 的有理分式逼近式的分子 N 和分母 D。虽然可以将这两个 mxArrays 传递给另一个 MATLAB 函数(本例中为 min),但不能将 min 返回的 mxArray 指定给输出 y。

如果在 Simulink® 模型中的 MATLAB Function 模块中运行此函数 foo,仿真过程中代码将生成以下错误:

Function output ‘y’ cannot be of MATLAB type.
要解决此问题,请按如下方式将 y 定义为您希望 min 返回的值的类型和大小,本例中为双精度标量值:

function y = foo %#codegen
coder.extrinsic('rat');
[N D] = rat(pi);
y = 0; % Define y as a scalar of type double
y = min(N,D);

5、最后修改的函数如下:

function [xdot1, U1] = fcn(x,n,mp,rp,V_c,beta_c)
coder.extrinsic('otter');
[xdot,U] = otter(x,n,mp,rp,V_c,beta_c);
xdot1=zeros(12,1);
U1=0;
xdot1=xdot;
U1=U;
end

simlink里面MATLAB Function ‘xxx‘ not supported for code generation.相关推荐

  1. dll function 'xxx' not found

    function 'xxx' not found 原因: 声明和实现的参数不一致,包括数量,变量名和返回值. MYLIBDLL char* testchar(int plus1); char* tes ...

  2. 【Matlab 控制】利用 Matlab Function 绘制分段函数

    利用 Switch block 利用 Matlab Function block function [mean, stdev] = fcn(vals) % #codegen% calculates a ...

  3. Simulink中的某一个模块用了我自己定义的MATLAB function模块,但是出现的结果是:The block ‘**/matlab function/sfunction‘ is in an

    Simulink中的某一个模块用了我自己定义的MATLAB function模块,但是出现的结果是:The block '/matlab function/sfunction' is in an in ...

  4. 如何保存一个函数_如何表达一个“分段函数”之学习Matlab Function模块

    前言 本节内容介绍用"Matlab Function Model"实现"分段函数" 1.   先介绍MATLAB Function 模块 如下图所示可以获得 M ...

  5. c #include如何找到文件_使用 MATLAB Function 模块集成 C 代码

    检索   使用 MATLAB Function 模块集成 C 代码 从 Simulink 模型中调用 C 代码 您可以使用 MATLAB Function 模块从 Simulink® 模型中调用外部 ...

  6. matlab编写数学公式计算,关于MATLAB Function实现数学运算的相关介绍

    描述 其实也就是使用 Simulink 库里相应的模块,以及使用 Stateflow 流程图向导.在这一篇,我们介绍使用MATLAB Function的方式. 其实,如果想在 Simulink 里嵌套 ...

  7. C编译报错: implicit declaration of function xxx is invalid in C99 [-Wimplicit-function-declaration]

    C编译报错: implicit declaration of function xxx is invalid in C99 [-Wimplicit-function-declaration] 代码文件 ...

  8. Matlab Function输入输出

    1.Simulink中Matlab Function函数的输入输出除支持常见基本数据类型如uint8,single, boolean等外,还支持自定义结构体,但需在Edit Data中找到Input和 ...

  9. simulink中MATLAB function模块数据维度不正确问题

    1.首先打开MATLAB function模块 2.函数->Edit Data 3.选中数据维度不正确的变量->大小(size)进行更改(默认-1)->结束

  10. MATLAB中assignment模块,Simulink Matlab Function 模块使用问题求教

    将 M 文件中的代码拷贝到Matlab Function模块中直接使用会出现错误 代码如下: function out =abscontroller(in) alpha        =in(1); ...

最新文章

  1. linux/centos 解决Tomcat内存溢出,centostomcat
  2. reload端口 tomcat_CentOS 7配置tomcat https并改端口为443
  3. 【java】高并发之限流 RateLimiter使用
  4. 面试题 01.09. 字符串轮转
  5. fis 前端构建工具
  6. iOS 蓝牙扫描设备注意 2021-10-12
  7. VARCHART XGantt 应用程序支持简介
  8. mysql间隙锁_解决MySQL可重复读——详解间隙锁
  9. 立秋后注意脚部保暖 试试量身定制合脚鞋
  10. php twitter api,使用PHP通过twitter api获取twitter的推文信息
  11. Linux服务器下安装vsftpd,搭建文件服务器
  12. armbian 斐讯n1_树莓派/斐讯N1/ARMBIAN/安装HOME ASSISTANT
  13. Cisco:DHCP自动获取IP地址
  14. 腾讯文智自然语言处理介绍与情感分析API调用
  15. CS61A Proj 3
  16. 《Microduino实战》——3.4 重新认识软件与硬件
  17. python的字符串切片操作
  18. 一分钟教你如何使用edge浏览器玩4399小游戏
  19. [译]用R语言做挖掘数据《四》
  20. 根据自定义类属性导出Excel

热门文章

  1. matlab——整数规划
  2. Summary——CrowdPose: Efficient Crowded Scenes Pose Estimation and A New Benchmark
  3. JSP 银行网上账户管理系统myeclipse编程java网页
  4. 退款java_APP支付 + 退款(JAVA实现)
  5. 【扩展作业分享】JAVA, 数据结构与算法, 操作系统,大数据可视化,游戏制作
  6. Steam游戏信息爬取-热销榜价格好评率折扣评论
  7. 国防科技大学计算机考研资料汇总
  8. 6.2.1.1UE maximum output power - EIRP and TRP——翻译
  9. 变压器励磁模型 Matlab simulink 可用于模拟电压暂降等电能质量问题
  10. oracle卸数的perl脚本,卸载cpan安装的所有perl模块