這是我的MATLAB代碼:爲什麼兩個有限數的分解返回零?
mu_n = Tnume_mu/Tdeno_mu;
當我運行此,它顯示0一如既往,雖然可變Tnume_mu = 255
和Tdeno_mu = 1.7957e4
。
這是我的MATLAB代碼:爲什麼兩個有限數的分解返回零?
mu_n = Tnume_mu/Tdeno_mu;
當我運行此,它顯示0一如既往,雖然可變Tnume_mu = 255
和Tdeno_mu = 1.7957e4
。
你檢查過你的變量類嗎?
>> x = int32(5);
>> y = int32(10);
>> class(x)
int32
>> class(y)
int32
>> x/y
0
但
>> x = 5;
>> y = 10;
>> class(x)
double
>> class(y)
double
>> x/y
0.5
整數變量(int8
,int16
,int32
,int64
)只能取整數值,並且它們被分裂過程中向零取整,因此,如果其結果將是介於0和1,那麼結果就是0。
非常感謝Mr.Chris ........我得到了正確的值............ – Neha
爲了簡化問題,我會更容易使用的變量名稱和編號:
A = 5;
B = 2;
C = A/B;
C =
2.5
的/
運營商是rdivide
一條捷徑。這是兩個標量之間的常規分工。您可以將其展開爲矩陣,例如
A = magic(2);
B = magic(2).';
C = A./B;
C =
1.0000 0.7500
1.3333 1.0000
其中./
確保你把聰明元素。
還有另一個部門,即左 -divide:ldivide
,或簡稱\
。這是一個特定的MATLAB運算符,其矩陣乘法通常由C = A^-1 * B
表示,其中A^-1
是矩陣A
的倒數。這個算子的美妙之處在於,它不會明確地計算反向,而是它的******分解,使它更快和更強壯。這不是問題,因爲你很少需要明確的矩陣逆,你可以通過inv
創建:
C=A\B
C =
0.7000 -0.2000
0.1000 1.4000
D = inv(A)*B;
C == D
1
你確定兩者都是數字嗎? – GameOfThrows
是的,先生們都是數字,但我沒有得到答案。 – Neha
@Neha - 抱歉你的問題很快就關閉了。在我看來,這是一個合理的問題,不應該被低估(除了開頭的真正糟糕的標題外)。我投票重新開放,因爲答案不是微不足道的,至少在MATLAB通常處理雙打而不是int的情況下。 – thewaywewalk