2014-03-26 43 views
-2

是否有內置的matlab函數檢查值是否爲負值?Matlab:檢查負值的函數

例如,

x = -4; % For neg 

isneg(x) = 1; 

y = 3; % For pos 

isneg(y) = 0; 
+4

怎麼樣'@(x)x <0'? –

+0

請詳細解釋,對不起,我是初學者。 – user3465559

+2

[sign](http://www.mathworks.com/help/matlab/ref/sign.html)怎麼樣?用於除以零的 – iavr

回答

1

您可以創建anonymous function像:

>> fun = @(val) val < 0 ; 
>> fun(-4) 

ans = 

    1 

>> fun(3) 

ans = 

    0 
1

這裏亞去:

function answer = isneg(value) 
    if value < 0 
     answer = 1; 
    else 
     answer = 0; 
    end 
1

首先,你應該考慮負數的屬性。一旦你完成了,你可以很容易地檢查一個數字是否爲負數。我可以想到一些這樣做的方法。

負數有虛平方根。因此,採用-x的平方根並檢查它是否真實是一種簡單的方法。退房isreal

neg = isreal(sqrt(-x)); 

如果您嘗試負數的sin(x),你會得到0和-1之間否定的回答。如果您使用功能floor並返回此值的負值,您將得到您的答案(請注意,如果您的號碼正好是pi/2,則這將失敗)。

neg = -floor(sin(x)); 

當然,除以零會給你無限。由於x + abs(x) == 0爲負數只,一個簡單的方法來檢查負值是x + abs(x)劃分1,並使用isinf這樣:現在

neg = isinf(1/(x + abs(x))); 

,使用操作logical not,您可以檢查是否絕對值不等於值本身,這種方式:

neg = (x ~= abs(x)); 

但是,您可以退房sign。如果符號爲正,它將返回1,如果數字爲負,則返回0。因此,你有兩個選擇:

neg = sign(-x); 

neg = 1 - sign(x); 
+0

+ Inf^0。 – nkjt