2015-06-13 15 views
0
代碼MAX(ABS)

我在MATLAB下面的代碼,我想在一個MEX文件重寫用C(或C++):如何在MATLAB

[a,b] = max(abs(C)); 

其中,C爲載體,是向量C中所有元素的最大絕對值,b是a的索引。

請任何人都可以幫我解決這個問題嗎?我已經嘗試過使用「abs」函數,但它返回了正整數(但我希望它們在包含小數值的情況下保持雙精度)。提前謝謝了。

+1

您對Matlab代碼所做的描述是錯誤的。如果'C'是一個矩陣,那麼對其應用'max'意味着'a'將是一個行向量,每個元素包含abs(C)'結果對應列的最大值,'b'也將是一個包含'a'中值的索引的向量。 C和C++不是同一種語言,因此請對您使用的內容做出決定。如果你使用過['std :: abs'](http://en.cppreference.com/w/cpp/numeric/math/fabs),你就不會遇到截斷的問題。 – Praetorian

+0

@Praetorian:'std :: abs'也會截斷,如果你#include '也不''包括#include '只需要'std :: fabs'就可以了。 –

+0

感謝@Praetorian的貢獻。我編輯了我的問題以突出顯示C作爲一個向量。因爲mex可以編譯C和C++,所以任何人都可以。 – Amanda

回答

4

man abs告訴你爲什麼你得到了結果:腹肌 - 整絕對值函數

你想fabs這裏:「浮點絕對值函數」。請注意,您需要包含math.habs通常在stdlib.h)。