问题标签 [matlab-deployment]
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.
matlab - 从 MATLAB 编译的函数运行 .m 文件
背景
假设我在 MATLAB 中编译了以下简单函数
该函数foo
只获取.m文件的路径并尝试运行它。
foo
但是,当我在编译后实际尝试运行时:
其中path_to_m_file
是一个简单的.m文件,其中包含如下语句:
我收到以下错误:
但是,我知道这foo
得到了正确的路径。例如,如果我尝试用run
以下两行替换该行foo
foo
读取文件的相应行.m
。所以.m
文件就在那里,MATLAB 引擎可以“看到”它。事实上,我什至可以eval
在使用textscan
.
所以我的问题是:
为什么我会收到上述错误?为什么不
foo
运行.m
文件?更新:请参阅下面的@strictlyrude27 的回答,了解似乎是这个问题的答案。
如果上述方法不起作用。有没有办法让 MATLAB 编译的函数运行在编译原始函数后可能已更改的.m文件?
我第二个问题的动机:
我希望能够“更新”作为.m
项目一部分的文件,而无需重新编译整个项目。对此的任何想法将不胜感激。
c++ - 从 matlab 代码创建一个静态库
我已经知道您可以从 matlab 创建一个独立的可执行文件和一个共享库。但是,我们的配置管理过程(版本和分发)最好使用静态库,然后将其包含在我正在构建的 dll 中(在 C++ 中)。
这可能根本不可能,但我很好奇。有没有人这样做过?
c# - 函数在 MATLAB 中正常工作,但在从 .NET 调用时不能正常工作
我正在使用 MATLAB Builder NE 来实现互操作性,以便从作为开源应用程序ClearCanvas的插件构建的 C# .NET 程序调用 MATLAB 函数。当我从 .NET 程序正常运行代码时,我通常(但不总是)收到错误消息
MWMCR::EvaluateFunction 错误 ... 引用元胞数组的不存在元素。=> ComputeT1Maps.m 第 178 行出错。
有问题的 MATLAB 代码行如下:
Header 是 MATLAB 的 dicominfo 函数给出的形式的结构,而 MetaData{n} 是包含第 n 个图像文件的文件名和图像头结构的结构。
ComputeT1Maps 函数的函数签名是:
为了找出这个错误,我在 ComputeT1Maps 函数的开头添加了以下行以保留状态,这样我就可以看到从 .NET 传递给 MATLAB 的值:
因此,保留了这个函数的输入(从调用它的 .NET 程序接收),然后我尝试在加载保存的变量后从交互式 MATLAB 会话运行我的 ComputeT1Maps 函数,这样我就可以利用 MATLAB 的调试工具来计算找出我收到错误的原因。这时候事情就变得非常奇怪了。该函数在交互式 MATLAB 会话中工作得很好,当给定的操作数与从我的 .NET 程序调用它时给出的完全相同的操作数时。怎么会这样?从 C# .NET 调用该函数时如何会失败,但在交互式 MATLAB 会话中给出完全相同的输入时如何正确运行?此外,这个相同的代码以前可以工作,并且在我将本地安装的 MATLAB 和 MCR 更新到最新版本 (2011b) 之后才开始发生错误。
在 .NET 端,data
传递给 MATLAB 的 由以下函数构造:
c# - 将 .NET 数据表传递给 MATLAB
我正在为 Matlab 组件构建接口层,该组件用于分析由我也在构建的单独 .NET 应用程序维护的数据。我正在尝试将 .NET 数据表序列化为要传递给 MATLAB 组件的数值数组(作为更通用的序列化例程的一部分)。
到目前为止,我在传递数字数据表方面相当成功,但是在尝试添加 datatype 列时遇到了障碍DateTime
。到目前为止,我一直在做的是将值从 填充DataTable
到双精度数组中,因为 MATLAB 只真正关心双精度数,然后直接转换为 a MWNumericArray
,它本质上是一个矩阵。
这是当前代码;
Conversion.ConvertToDouble
是我自己的例程,它迎合 NULLS、DBNull 并返回 double.NaN,再次因为 Matlab 将所有 NULLS 视为 NaN。
事情就是这样;有谁知道 MATLAB 数据类型可以让我传入具有多种数据类型的连续数组?我能想到的唯一解决方法是使用MWStructArray
of MWStructArrays
,但这似乎很老套,我不确定它在 MATLAB 代码中的效果如何,所以如果可以的话,我想尝试找到一个更优雅的解决方案。我看过使用MWCellArray
,但是当我尝试实例化它时它给了我一个编译错误。
我希望能够做类似的事情;
但正如我所说,我得到了一个编译错误,也将一个对象数组传递给构造函数。
抱歉,如果我错过了任何愚蠢的事情。我做了一些谷歌搜索,但是关于 Matlab 到 .NET 接口的信息似乎有点轻,所以这就是我在这里发布它的原因。
提前致谢。
[编辑]
感谢大家的建议。
事实证明,对于我们的具体实现来说,最快和最有效的方法是在 SQL 代码中将 Datetime 转换为 int。
但是,在其他方法中,我建议使用 MWCharArray 方法。它使用最少的大惊小怪,事实证明我只是做错了 - 你不能把它当作另一种 MWArray 类型,因为它当然设计用于处理需要迭代它的多种数据类型,坚持使用 MWNumerics 或随心所欲,随心所欲。需要注意的一件事是 MWArrays 是基于 1 的,而不是基于 0 的。那个人一直在抓我。
我将在今天晚些时候有空的时候进行更详细的讨论,但现在我没有。再次感谢大家的帮助。
matlab - 为什么从我的 .m 和 .fig 文件制作独立的 .exe 时会出现此警告?
看到我现在有一个 .m 文件和 .fig 文件用于与该 .m 文件关联的 gui 功能,用于为该 .m 文件制作独立的 .exe 文件
我在用
这样做后我收到这样的警告
我不明白为什么会出现这个警告?
&在此之后,所有ma exe都准备就绪,但是通过执行某些功能无法100%运行它会崩溃?为什么这一切都发生在这里?我怎样才能让我的 exe 更好地工作?
windows - C:Windows 7中的驱动器访问权限
在 matlab 中,我使用了一个 windows 独立应用程序。此应用程序中有一行将文件写入C:\...\...\
. 当我运行从此 Windows 独立应用程序生成的输出 exe 文件时,该 exe 不写入C:\...\...\
也不告诉我该分区中存在安全问题。执行所做的一切都没有。但是,当我右键单击并以管理员身份运行 exe 时,它运行正常。
我想在没有右键单击的情况下以管理员身份运行。matlab中是否有可以做到这一点的命令?
c# - 使用 Matlab 从 C# 控制台应用程序创建图形或绘图?
如果我在 C# 中有一个二维数组,我将如何在 Matlab 中将此数组的内容绘制为二维图?我正在使用扩展方法,即
matlab - 构建执行 m-file + simulink 模型(我的程序有一个错误!)
我已经用 MATLAB 编写了一个程序:
- 清除所有;clc
- 加载数据.dat
- a=数据+2;
- b=乐趣(一);
- sim('new_equ2')
- c=b+A;
- 保存 new_data c -ascii
--> 我的程序已经被名称“test.m”保存了</p>
第 4 行:'fun' 是一个函数。
在第 5 行:“new_equ2”是一个 simulink 模型。
第 6 行:“A”是 simulink 模型输出。
我想从 test.m 构建执行文件,因此我在命令窗口中写道:
mcc -m 测试
之后,我在 Windows 命令提示符下运行了 test.exe。我遇到了这个错误:
“未定义的函数或方法‘sim’。. . “</p>
我想从 test.m 创建执行文件,它运行时没有错误。
matlab - uitable编译后无法正常显示
我有一个嵌入在具有单元结构的 GUI 中的 uitable,它是可编辑的。在 Matlab 环境中一切正常,但编译后,uitable 只显示空白。它仍然是可编辑的,但在 GUI 中根本没有任何显示。
PS:我已经在编译中包含了arrayviewfunc和其他相关函数。因此,在这种情况下,缺少功能不应成为潜在原因。这个bug已经在2008b修复了,但是我只有2008a的license。尽管如此,这对我的程序来说非常重要,所以如果 2008a 中存在任何解决方法,我想在这里咨询一下。
太感谢了!
matlab - 哪个是允许在没有管理员权限的情况下安装 MCR 的最新 Matlab 版本?
我想将一些 GUI 编译成 Windows 独立应用程序(*.exe
)。主要思想是在不同的计算机上运行我的应用程序,而无需特权来运行它。
在执行这些步骤时,我注意到当我想vcredist_x86.exe
在不同的计算机上运行时需要管理员权限。我在官方论坛上问过,他们确认这是不可能的。
旧版本还有其他有趣的替代方法: How can I install the Matlab Component Runtime without Administrator rights when using MATLAB Compiler 4.6 (R2007a)
尽管现在没有受支持的方式,但直到哪个 Matlab 版本才可以在没有特权的情况下运行独立应用程序?
我的版本是 2010b,但我可以使用支持在没有特权的情况下运行 MCR 的最新版本。我有 Matlab 编译器,但没有 Matlab 代码生成器(自动翻译成另一种语言)。