我正在Matlab中實現一個數值方法。但是,我的公式或Matlab出現問題似乎很愚蠢。我想在Matlab中得到1920,但結果如下。 Python解釋器提供了爲什麼兩位翻譯的結果不一樣?
>>> x0_square = 3200
>>> x0 = 2560
>>> scale_factor = 2048
>>> x = 2048
>>> a = x0_square + (((2 * x0) * (x - x0))/scale_factor)
>>> print a
1920
但Matlab的給
% all variables here is int16. all value are the same as the above.
>> x_square_a = int16(x0_square + (((2 .* x0) .* (x - x0)) ./ scale_factor));
>> x_square_a
x_square_a =
3184
爲什麼他們給出不同的結果?我怎樣才能從Matlab解釋器獲得1920年?另外,我受限於任何變量都不能使用,除了int16。
你更可能是傻瓜,而不是Matlab。我猜你對整數除法的理解很差。 – duffymo
Python沒有我暫時忘記名字的類型強制的東西。 'a =(int)(x0_square +(((2 * x0)*(x-x0))/ scale_factor))'沒有任何意義。你想'int((x0_square +(((2 * x0)*(x - x0))/ scale_factor)))'(儘管這可能不是唯一的問題)。 – rlms
但是您使用了多個變量:>>> x0_square = 3200 >>> x0 = 2560 >>> scale_factor = 2048' assignes 3個變量。你的意思是功能還是什麼? – rlms