我有一個很好的調整算法在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中使用的測試數據中生成的嗎?