【发布时间】:2016-07-20 12:41:28
【问题描述】:
我在 MATLAB 中有一个微调算法,可以在矩阵上运行(当然)。我已经使用 matlab coder 为这个算法生成了 c 代码,它按预期工作。
这是我在 Matlab 中使用的函数调用
x = B/A
在哪里
- B 大小为 1*500(行 * 列)
- A 的大小为 10*500
- x,结果大小为1*10
使用 Matlab Coder 将其转换为 C 源代码时。我注意到函数定义接受与上述大小相同的参数。
void myfunction(const double B[500], const double A[5000], double x[10])
对于原型和测试目的,这似乎没问题。但是,在生产中,我更喜欢将此功能用于不同的尺寸。例如,上述变量中的 100 而不是 500 也应该起作用。如何在我的算法中消除对矩阵维度的依赖?
此外,有几行代码使用硬编码整数。比如有类似
的代码if (rankR <= 1.4903363393874656E-8)
// Some internal function calls
else
// Usage of standard sqrt
或
500.0 * fabs(A[0]) * 2.2204460492503131E-16
谁能解释一下这些硬编码整数是什么?这些是从我在 MATLAB 中使用的测试数据生成的吗?
【问题讨论】:
标签: c algorithm matlab matlab-deployment matlab-coder