编译matlab的s函数(compiling s-functions for matlab)

我一直在尝试使用我的c ++代码在matlab中创建一个s函数块。我正在使用以下mexopts.bat文件

@echo关闭

设置MATLAB =%MATLAB%

设置PATH =%PATH%; c:\ cygwin \ bin

设置MW_TARGET_ARCH = win64

设置COMPILER = x86_64-w64-mingw32-g ++

设置COMPFLAGS = -c -fexceptions“-I%MATLAB%\ extern \ include”

设置OPTIMFLAGS = -O3

设置DEBUGFLAGS = -g -Wall

设置NAME_OBJECT = -o

设置PRELINK_CMDS1 = echo EXPORTS> mex.def&echo mexFunction >> mex.def

设置LIBLOC =“%MATLAB%\ bin \ win64”

设置LINKER = x86_64-w64-mingw32-g ++

设置LINKFLAGS = -static-libgcc -shared mex.def -L%LIBLOC%-static-libstdc ++

设置LINKFLAGSPOST = -lmex -lmx -lmwlapack -lmwblas -lstdc ++

设置LINKOPTIMFLAGS = -O3

设置LINKDEBUGFLAGS = -g -Wall

设置LINK_FILE =

设置LINK_LIB =

设置NAME_OUTPUT = -o“%OUTDIR %% MEX_NAME %% MEX_EXT%”

设置RSP_FILE_INDICATOR =

设置POSTLINK_CMDS1 = del mex.def

我能够使用'mex'函数从matlab成功编译样本mexfunction文件,但是当我尝试编译一个s函数时(我用matlab获取了示例文件)我得到以下错误

C:\Program Files\MATLAB\R2012a\simulink\include/simstruc.h:357:3: error: #error Must define one of RT, NRT, MATLAB_MEX_FILE, SL_INTERNAL, or FIPXT_SHARED_MODULE

C:\Program Files\MATLAB\R2012a\simulink\include/simstruc.h:467:78: fatal error: rt_matrx.h: No such file or directory

compilation terminated.

我确信c ++文件是正确的,因为我从matlab示例中获取它们

I have been trying to make an s-function block in matlab with my c++ codes.I am using the following mexopts.bat file

@echo off

set MATLAB=%MATLAB%

set PATH=%PATH%;c:\cygwin\bin

set MW_TARGET_ARCH=win64

set COMPILER=x86_64-w64-mingw32-g++

set COMPFLAGS=-c -fexceptions "-I%MATLAB%\extern\include"

set OPTIMFLAGS=-O3

set DEBUGFLAGS=-g -Wall

set NAME_OBJECT=-o

set PRELINK_CMDS1=echo EXPORTS > mex.def & echo mexFunction >> mex.def

set LIBLOC="%MATLAB%\bin\win64"

set LINKER=x86_64-w64-mingw32-g++

set LINKFLAGS= -static-libgcc -shared mex.def -L%LIBLOC% -static-libstdc++

set LINKFLAGSPOST= -lmex -lmx -lmwlapack -lmwblas -lstdc++

set LINKOPTIMFLAGS=-O3

set LINKDEBUGFLAGS= -g -Wall

set LINK_FILE=

set LINK_LIB=

set NAME_OUTPUT=-o "%OUTDIR%%MEX_NAME%%MEX_EXT%"

set RSP_FILE_INDICATOR=

set POSTLINK_CMDS1=del mex.def

I am able to successfully compile sample mexfunction file from matlab using the 'mex' function,But when i try compiling an s-function(i took the example files with matlab) i get the following errror

C:\Program Files\MATLAB\R2012a\simulink\include/simstruc.h:357:3: error: #error Must define one of RT, NRT, MATLAB_MEX_FILE, SL_INTERNAL, or FIPXT_SHARED_MODULE

C:\Program Files\MATLAB\R2012a\simulink\include/simstruc.h:467:78: fatal error: rt_matrx.h: No such file or directory

compilation terminated.

I am sure the c++ files are correct ,coz i took them from matlab examples

原文:https://stackoverflow.com/questions/11817974

更新时间:2020-01-20 20:29

相关问答

在搜索互联网并在此论坛上等待答案后没有结果,我的问题的解决方案最终升级到MATLAB 2013a。 此外,还需要对mexopts.sh文件进行一些修改。 只需将10.7所有实例替换为10.8或10.9 。 这两个都适合我,但我最终用10.9替换它,因为我正在运行小牛队。 可在此站点上找到“官方”解决方案。 After searching the internet and waiting for answers on this forum with no results, the solution

...

MATLAB编译器加密和归档您的MATLAB代码(它仍然是MATLAB .m代码),并将其打包成一个薄的可执行文件(.exe或.dll)包装器。 这与MATLAB编译器运行时(MCR)一起发送给最终用户。 如果你愿意,MCR也可以打包在可执行文件中。 MCR可以自由重新分发,您可以将其视为基本上没有前端桌面的MATLAB的副本。 当用户运行可执行文件时,它将对MATLAB代码进行解压缩和解密,并对MCR而不是MATLAB进行运行。 因此,通过这种方法提供的应用程序的运行方式与MATLAB中的运行方

...

如果标准库中没有round()函数,则可以在处理浮点数时任意评估每个值,分析要舍入的位置之后的地方的数字,检查是否它大于,等于或小于5; 然后,如果该值小于5,那么您可以floor()最终查看的数字。 如果您四舍五入后的数字的值为5或更大,您可以继续使功能floor()被评估的数字,然后加1。 对于与此相关的任何无效性,我表示歉意。 If there isn't a round() function in the standard library, you could, if dealing wi

...

你可以做一些像mean(x(~isnan(x))) 。 如果你想要,你也可以写一堆这样的包装,并将它们放在你的startup.m文件中。 You could do something like mean(x(~isnan(x))). If you want you could also write a bunch of wrappers like this and put them in your startup.m file.

假设你的主要约束是你没有在目标机器上安装MATLAB,我相信这是要走的路: 而不是编译matlab代码,生成C代码。 然后可以在您喜欢的任何系统上编译此代码,而无需matlab。 这是在Matlab Central上提出的。 Assuming that your main constraint is that you don't have MATLAB installed on the target machine, I believe this is the way to go: Rather

...

从'inside'函数调用的mfilename返回函数路径和名称。 fullPath = mfilename('fullpath');

pathString = fileparts(fullPath);

dataPath = [ pathString filesep 'data.csv'];

csvwrite(dataPath, data(:));

mfilename called from 'inside' a function returns the function path and na

...

所有S函数都需要定义以下预处理器符号。 MATLAB_MEX_FILE

S_FUNCTION_LEVEL=2

S_FUNCTION_NAME=

使用-D指令将这些添加到批处理文件中的COMPFLAGS 。 All S-Functions require the following preprocessor symbols to be defined. MATLAB_MEX_FILE

S_FUNCTION_LEVEL=2

S_FUNCTION_NAME=

...

如果你想用不同数量的输入参数定义两个同名的函数,你应该在同一个函数文件中定义它们,并使用varargin/nargin来处理这两种情况: function out=Kn(varargin)

if nargin==1

a=varargin{1};

%

%here do what Kn(a) does

%

%out=...

elseif nargin==2

a=varargin{1};

b=varargin{2};

%

%here do what Kn(a,b)

...

MATLAB和Excel以不同顺序具有besseli函数的参数。 以下表达式(注意已更改参数的顺序): 0.32*besseli(0, 0.32)/2/besseli(1, 0.32)

会产生: > ans = 1.0127

在MATLAB中。 MATLAB and Excel have the arguments of the besseli function in a different order. The following expression (note the order of

...

我认为你的意思是“Get()”不会从生成的代码中调用。 您的tlc文件在您链接的github存储库中没有正确的行结尾。 解决之后,生成的代码中会出现对Get()的调用。 修复此问题可能是特定于平台的。 如果您在平台中的简单代码编辑器中打开tlc文件,您应该能够在正确的位置看到新行。 如果您看到^ M等字符,则需要用新行替换它。 I think you meant "Get()" is not called from the generated code. Your tlc file does no

...

在matlab中xt( ),编译matlab的s函数(compiling s-functions for matlab)相关推荐

  1. 将函数当做参数 matlab,Matlab中如何将(自定义)函数作为参数传递给另一个函数...

    假如我们编写了一个积分通用程序,想使它更具有通用性,那么可以把被积函数也作为一个参数.在c/c++中,可以使用函数指针来实现上边的功能,在matlab中如何实现呢?使用函数句柄--这时类似于函数指针的 ...

  2. matlab中饼图绘制程序,MATLAB中绘制二维饼图的函数是(? ? ) (1.5分)

    MATLAB中绘制二维饼图的函数是(? ? ) (1.5分) 答:pie 计算机的内存储器比外存储器读写速度 ______ 答:快 新民主主义革命时期,提出了反帝反封建这个任务就等于真正懂得了什么叫反 ...

  3. MatLab中的多项式拟合(lsqcurvefit函数的非线性曲线拟合)

    MatLab中的多项式拟合(lsqcurvefit函数的非线性曲线拟合) lsqcurvefit函数 函数原型 x=lsqcurvefit(fun, x0, xdata, ydata) == 其中的参 ...

  4. matlab得到计算机时间,Matlab中处理日期与时间的函数

    Matlab用三种格式来表示日期与时间 (1)双精度型日期数字:一个日期型数字代表从公元0年到某一日期的的天数,例如,2008年8月26日夜时0点钟被表示为733646,而这同一天的中午12点就被表示 ...

  5. MatLab中rand randi randn 三个函数的解析

    MatLab中rand randi randn 三个函数的解析 1.rand 概括:生成(0,1)之间的均匀分布的伪随机数 示例1: >>rand %什么参数也没有,生成一个(0,1)的数 ...

  6. Matlab中一维和二维滤波函数及其典型用法【随时更新】

    Matlab中一维和二维滤波函数及其典型用法[随时更新] 一维滤波函数 均值滤波器movmean 中值滤波器movmedian 二维滤波函数 用fspecial预定义各种二维滤波器 主要用于自查,如果 ...

  7. matlab对数收益直方图,科学网—MATLAB中绘制数据直方图的新函数histogram2 - 王福昌的博文...

    MATLAB中有命令hist3() 可以绘制直方图,竖坐标是频数,这与一些教科书中用纵轴表示频率的做法不一致,有些时候不便于使用.当然,使用者可以自己编写定制能够在纵轴绘出频率的直方图.在MATLAB ...

  8. matlab中用于小数取整的函数的用法

    matlab中小数取整的函数大约有四个:floor.ceil.round.fix 若 A = [-2.0, -1.9, -1.55, -1.45, -1.1, 1.0, 1.1, 1.45, 1.55 ...

  9. matlab变量区表示函数,MATLAB中的工作区,变量和函数

    本文概述 工作空间 工作区包含我们在MATLAB中工作时创建的所有变量. 每当我们为变量分配值时, 它都会自动在工作空间中获取空间. 关闭环境后, 工作空间变量将消失, 因此请将这些变量保存在文件中以 ...

最新文章

  1. 且看BCH开启的“信用本位”时代
  2. python arcade库是干什么的-Python街机模块arcade的鼠标移动与单击示例
  3. 9 大主题!机器学习算法理论面试题大汇总
  4. matlab批量生成灰度图像_科学网—matlab彩色图像的批处理转换为灰度、二值和主成分图图像 - 金秀良的博文...
  5. C++中char*与wchar_t*之间的转换
  6. pcl画圆球_PCL之轨迹绘制(二)
  7. kafka之六:为什么Kafka那么快
  8. 常程加盟小米,“电磁炉”组合出道,网友喊话雷军也接收一下罗永浩!
  9. 系统无法在此计算机硬件上运行,Windows安装程序无法将配置未在此计算机的硬件上运行的解决方案-太平洋电脑网...
  10. 小米笔记本桌面计算机图标,小米笔记本桌面锁定怎么解除
  11. 宝塔搭建javaweb_宝塔面板配置及部署javaweb教程(全网最全)
  12. 机房服务器巡视项目,年底,机房巡检不能少
  13. 身份证前六位地址验证
  14. kinect游戏下载
  15. android 设计psd,如何将PSD设计转换为Android xml?
  16. java开发知识总结1
  17. 项目管理(PMP)项目进度管理
  18. 关于合格设计师的30条冷知识
  19. 计算机图像分析系统属于,智能图像分析系统
  20. kafka按照时间查询记录

热门文章

  1. ddx_check绑定注意事项
  2. 中断描述符表描述符:任务门,中断门,陷阱门(调用门)
  3. 2021年二月下旬文章导读与开源项目仓库 | scatter-gather DMA,SR-IOV,ARP欺骗,中断,Lockdep,virtio,vhost
  4. 《深入浅出DPDK》读书笔记(十二):DPDK虚拟化技术篇(半虚拟化Virtio)
  5. F-Stack KNI配置注意事项
  6. excel合并多个工作表_excel中汇总多个工作表数据的神器——合并计算
  7. mysql ef 一对多 更新数据库_Entity Framework_成功针对多种数据库使用实体框架(EF)...
  8. java 强制转换 效率_Java 性能优化:35 个小细节,让你提升 Java 代码的运行效率...
  9. python语言入门q-Python基础教程中的函数
  10. OpenShift 4 Tekton (1) - OpenShift Pipeline入门-安装Pipeline Operator