2016-11-16 59 views

回答

3

b=sign(a);例如?

這應該也是這樣。

+1

哇哦,NVM :)要在一個角落裏,現在坐下來,哭了起來。 –

2

Ander的答案是我會在這裏一起回答的。這是一個心理練習。可以使用logical運營商實現相同的:

b = (a > 0) - (a < 0); 

上述表達式的優雅是使得對於除了在0 a任何值,只有一個等式的一部分是「開」,在任何給定時間。如果a的任何值爲正值,則輸出將爲logicaltrue,因爲等式的左側激活而右側不激活。同樣,如果a的任何值都是負數,則等式的右邊將激活,並且也會評估爲true,而左邊則不會。有一個負號分配給右側,所以它合併爲-1。這與左側的組合完全合併爲一個double精確數組,從而完成我們的輸出。當a的任何值等於0時,檢查表達式給出的內容也是謹慎的。由於這兩個表達式都不會激活,因此這兩個表達式的計算結果爲logicalfalse,而false - false合併爲0,這是我們所期望的結果。

>> a = -2:0.5:2 

a = 

    -2.0000 -1.5000 -1.0000 -0.5000   0 0.5000 1.0000 1.5000 2.0000 

>> b = (a > 0) - (a < 0) 

b = 

    -1 -1 -1 -1  0  1  1  1  1 
相關問題

 相關問題