问题标签 [matlab-compiler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - 在 matlab exe 中使用标准 io 流:stdin 和 stdout
问题
我希望它在运行(编译)的 Matlab 可执行文件中“监听”标准输入流。
这就是我认为它是用c
或类似的语言完成的:
或者更详细地说,它可以这样使用:
回答
为了完整起见,我将完整地保留背景和笔记,但在 Amro 和 EitanT 的帮助下,我设法解决了问题。
背景
我已经找到了如何用其他语言做到这一点,这里有一些关于编译过程的说明。
但是,我还没有找到如何在 Matlab 中“收听”输入的方法。我最接近的是在 Octave 中对类 C IO 的描述,但是当我在 MATLAB 中寻找解决方案时,我无法在这方面取得进展。
请注意,更改或包装通过流发送数据的程序是不可能的,我更喜欢纯 MATLAB 解决方案,而不是包装我的整个程序。如果我用另一种语言从 MATLAB 中调用一个简单的函数,那就没问题了。
我尝试了什么?
我从命令窗口尝试fgets(0)
了一些函数,例如(fid = 0
似乎是对应于的 id stdin
(如@EitanT 所述并在尝试时看到fopen(0)
))但它只是返回:
我也考虑过使用 MATLAB 中的选项来调用系统命令或执行java
/perl
命令,但到目前为止没有运气。我也不确定这些在编译后是否仍然有效。
此外input('prompt','s')
,当我通过 打开程序时,我尝试使用此作品cmd
,但直到我按 Enter 键才执行任何操作。(我听的程序当然永远不会这样做,在最好的情况下,我可以\n
在每一行的末尾得到)。
我也尝试过 waitinput
File Exchange,但我认为这是一个死胡同,因为它没有捕捉到任何东西,而且似乎表现很差。
笔记
- 我正在使用 Windows 7 和 MATLAB 2012b。
- 我
popen
在 File Exchange 上找到了,但这似乎不适用于 Windows。 - 当我简单地键入这样
'show me'
的内容时,会正确地发送到标准输出流。
c# - 如何将文件路径从 asp.net matlab ne builder dll 工具传递给 Matlab 函数
我是 Matlab 的新手。我正在尝试使用 matlab 和 asp.net 构建在线图像压缩工具。我已经使用 matlab 编写了图像压缩算法,它工作正常,我已经使用“.NET Assembly”部署了它。然后它会生成 *.dll 文件。我已将这些文件包含在 ASP.NET 项目 -> 参考 -> *.dll 中。在 ASP.NET 中,我提供了浏览上传图像的选项。我将该图像保存在一个文件夹中。我已经为 dll 创建了一个对象,并通过传递保存的图像路径来调用压缩函数。但是我遇到了错误,比如我需要通过 MWArray。
压缩代码.m:
dll 文件名为 compression_tool,类为 CompressionTool
online.aspx.cs 的代码
我不知道该怎么做。请帮助我。在此先感谢。
matlab - 对从 Matlab 编译器运行时返回的 mxArray 对象调用 mxDestroyArray
我们一直在与从 Matlab 编译器创建的库进行交互。我们的问题与从库返回的数组有关。
一旦我们完成了数组,我们想释放内存,但是这样做会导致偶尔的分段错误。
这是 Matlab 库 ( bugtest.m
)::
这是我们用来构建它的命令(创建libbugtest.so
, 和libbugtest.h
)::
这是我们的 C 测试程序 ( bug_destroyarray.c
)::
下面是我们如何编译 C 程序(创建bug_destroyarray
)::
我们认为这mxDestroyArray(output)
是有问题的。
我们运行以下命令来测试崩溃:
- 在 32 个集群节点中的每一个上。
- 运行
bug_destroyarray
。 - 监视分段错误的输出。
大约 10% 的时间会发生崩溃。如果这在节点之间是独立的,那么您可能会认为它在大约 0.3% 的时间内崩溃。
当我们取出那条有问题的线时,我们无法使其崩溃。
但是,当不包括此行时,内存使用量会逐渐增加。
从我们所做的研究来看,似乎我们不应该破坏返回的数组,如果没有,我们如何阻止内存泄漏?
谢谢。
linux - Matlab:如何在 Linux 上创建一个独立的应用程序
我有一个使用 bash 脚本、gnuplot、octave 等的 Matlab GUI。我想构建一个可以在 Linux 上运行的独立应用程序。我不知道从哪里开始。请问你能帮帮我吗?
编辑:我在 Linux 上运行 Matlab。
c++ - Matlab-compiler:将数据更新为图形窗口
这是我的问题:我有一个 C++ 应用程序,我使用 Matlab 来可视化我的结果。
代码matlab是:
我已经用 mcc 创建了库。我的数据随时间而变化,并且想要更新绘图而不是关闭窗口并打开一个新窗口。
我查看了 matlab 中可用的 linkdata 函数,但 matlab 编译器不支持它。
你有什么想法?谢谢
matlab - MATLAB。试图访问 y(4);索引超出范围,因为 numel(y)=3
我对 matlab ode45 有疑问。当我编写系统 y(1) 和 y(2) 时,它只能工作,但是当我使用更多时,它会显示尝试访问 y(4);索引超出范围,因为 numel(y)=3 这是我的程序的代码,请检查一下`
`
matlab - 对于长执行代码,Matlab 独立会比 UI 中的 Matlab 更快吗?
我已经构建了一个独立的 Matlab 应用程序。我期望它比从 Matlab 环境中运行应用程序更快,但它确实有点慢(每次迭代 1.3 seg 与每次迭代 1.5 seg)我没有计算 MCR 所需的初始化时间,而是我的代码的执行。这是预期的性能还是我应该获得性能改进?我没有在部署工具上找到任何有助于减少执行时间的设置。
提前致谢
c++ - 从 C++ 错误调用 MATLAB:未解析的外部符号
从 C++ 调用我的 MATLAB 函数时,我遇到了几个错误。主要思路是:先编译一个MATLAB函数并生成DLL文件,然后在C++中包含.h和.lib文件。最后,编写.cpp来测试和调用函数。这是我的详细步骤,请告诉我我错在哪里。
(使用 MATLAB 2012b 和 Visual C++ 2008,Windows 7 64 位)
在 MATLAB 中:
mbuild -setup
并将mex -setup
Visual Microsoft Visual C++ 2008 SP1 设置为编译器。
/li>MyAdd.m
在文件夹中创建,C:\Users\WangYudong\Documents\MATLAB\MyAdd_M
功能如下:mcc -W cpplib:libMyAdd -T link:lib MyAdd
编译MyAdd.m
和生成多个文件,包括、libMyAdd.dll
和其他文件。libMyAdd.h
libMyAdd.lib
在 C++ 中
选择VC++ 目录→包含要添加的文件
E:\MATLAB\R2012b\extern\include
。选择VC++ 目录→要添加的 库文件
E:\MATLAB\R2012b\extern\lib\win64\microsoft
和C:\Users\WangYudong\Documents\MATLAB\MyAdd_M
.选择Linker → Input → Additional Dependencies添加新条目:
/li>在同一个文件夹中创建一个新的
MyAdd_test.cpp
putlibMyAdd.dll
和。添加头文件和资源文件。_libMyAdd.h
libMyAdd.lib
libMyAdd.h
libMyAdd.h
libMyAdd.lib
的代码MyAdd_test.cpp
是这样的:
最后,结果是
实际上,上面的工作是我从 C++ 调用自定义 MATLAB 函数的测试。我接下来的工作是将 MATLAB 程序转换为 C++,其中包含图像处理函数,如imread
、edge
、strel
等。我尝试过 MATLAB Coder,但它无法转换 MATLAB 函数。所以我试试上面的方法。这是转换这些功能的有效方法还是应该使用 OpenCV 实现它们?
matlab - 如何在 MATLAB 编译器中包含排除的工具箱 m 文件
我想在 C# 中使用模糊逻辑工具箱。为此,我使用 deploytool 创建了一个 NET 库,但它不包含我需要工作的文件 blur.m。并且在日志 mccExcludedFiles.log 中包含以下信息:
此文件包含 CTF 文件中未包含的各种工具箱函数的列表。如果在运行时调用这些函数中的任何一个,将引发错误。其中一些功能可能来自您在应用程序中未使用的工具箱。原因是这些工具箱重载了您的代码调用的一些方法。如果您知道您的代码正在使用哪些工具箱,则可以使用 -p 标志和 -N 标志来明确列出这些工具箱。这将导致 MATLAB Compiler 仅在指定的工具箱目录中查找除 MATLAB 目录之外的函数。有关这方面的更多信息,请参阅 MCC 文档。
C:\Program Files\MATLAB\R2010b\toolbox\fuzzy\fuzzy\fuzzy.m 由 D:\MyFolder\VNTU\bakal\matlabAndCs\ShowFuzzyDesigner.m 调用(由于工具箱编译规则)
如何在编译中包含这个排除的模糊.m文件?
.net - 从点网运行 Matlab 代码
我使用 matlab 2013 编译了一个小程序,我可以在我的 dll 中看到:
Test.TestMethods
我的所有函数
我已将其添加为对我的 dot net 项目的引用,并MWArray
从 matlab bin\win64\v2.0 文件夹中添加了 dll。
** 更新:应用程序在 matlabe 生成的代码中的这一行崩溃:
如果我嵌入 ctf 文件 - 它会崩溃,如果我不嵌入它,它会抛出异常。
我已经将我的程序设置为针对 X64 构建。
一旦我尝试创建对象:
我的应用程序崩溃。我只能在外部 Visual Studio 实例中看到:
我不知道从哪里开始......
EDIT1:这是ctor(还有一个静态cctor):