我有一个很好的调整算法在MATLAB上运行矩阵(ofcourse)。我已经使用matlab编码器为该算法生成c代码,并按预期工作。使用Matlab编码器生成算法生产
这里的一个函数调用我在Matlab中使用
x = B/A
其中
- B是尺寸为1×500(行×列)
- A是大小为10的* 500
- x,结果大小为1 * 10
使用Matlab编码器将其转换为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中使用的测试数据中生成的吗?