2017-04-17 39 views

回答

3

爲什麼x11x1000

documentation給出

exp(X)返回在數組X每個元素的指數

由於x1x1000,所以-(x*8)/3331x1000,並且當在其上施加exp(),所有1000種元素的指數被計算並且因此x11x1000。舉例來說,exp([1 2 3])[exp(1) exp(2) exp(3)]相同。


爲什麼y單號?

documentation給出

如果A是矩形m -by- n矩陣m~= n,和B是矩陣 與n列,那麼x = B/A返回的最小平方解等式x*A = B的 系統。

在你的情況,
A18000+xsize(18000+x)和是1x1000m=1n=1000,和m~=n
B7.5*x具有n=1000列。
(7.5*x)/(18000+x)正在返回方程x*(18000+x) = 7.5*x的最小二乘解。


結語:

  1. x = [0:1:999]; 支架是不必要在這裏,它最好是用這樣的:x=0:1:999 ;

  2. 看來你想要做逐元素計算部x1您應該使用./這樣的運算符:

    y=(7.5*x)./(18000+x); %Also removed unnecessary brackets 
    

還要注意,除了總是逐元素。 .+不是一個有效的MATLAB語法(它可以在Octave中工作)。在MATLAB here中查看有效的算術數組和矩陣運算符。

3。 x1也有一些不必要的括號。

+0

謝謝你這樣一個完整的答案! – toxUP

+0

完成。再次感謝。 – toxUP

1

儘量明確地指定要實現elementwise操作,而不是矩陣運算:

y = (7.5.*(x))./(18000+(x)); 

一般來說,.*確實的elementwise乘法,./確實的elementwise師等,所以[1 2] .* [3 4]產生[3 8]。忽略這些點會導致Matlab在使用矩陣運算時,只要它能夠將輸入合理地解釋爲矩陣。

+0

實際上工作。所以我猜測結論是x1並不是完全正確的書寫,偶爾也會有作用。 – toxUP

+0

'。+'不是MATLAB中的有效運算符。這個問題是關於MATLAB的問題,甚至沒有Octave標籤(如果你在Octave中試過) –

+0

@SardarUsama我在MATLAB中運行這個,而不是Octave,它運行起來。但我同意這是不必要的。 https://www.mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html(「由於加法和減法的矩陣和數組操作是相同的,因此字符對+和.-是不必要的「) –

3

這個問題已經被其他人回答了。我只想指出一件小事。你不需要寫x = 0:1:999。作爲x = 0:999最好寫成,因爲MATLAB或Octave使用的默認增量值爲1.

+0

好點,但不是這個問題的答案。它可以是文檔示例或評論的一部分。 – Masoud

+0

@masoud如何使它成爲一個文檔示例?我是新來堆棧溢出和任何幫助將不勝感激..在此先感謝 – anyanwu