2014-11-20 47 views

回答

3

你爲什麼不只是使用rand出來多維數據盒子?

array = rand(64,1,10); 

另外,不要使用minmax作爲變量名。這些都是MATLAB中的實際功能,所以你會無意間在名字上隱藏功能。


鑑於你編輯的問題,你想生成-1之間的值,以1的3D陣列。 rand只有0和1之間產生的數字,所以特技將乘以2的rand輸出並減去1。因此:

array = 2*rand(64,1,10) - 1; 

一般來說,您在上面寫式恰好變換數據,以便它適合於minmax之間。但是,我要提到的一點是,在進行此轉換之前,數據需要在[0,1]之間正常化。因爲rand的輸出已經保證了這一點,所以我們沒有什麼可擔心的。

因此,如果你這樣做:

minVal = -1; 
maxVal = 1; 
array = (maxVal-minVal)*rand(64,1,10) + minVal; 

你已經實現[-1,1]限制,你想開始。 maxVal - minVal將變爲2,因爲1 - (-1) = 2minVal將爲-1,因此您將減去1.因此,我以前的代碼等同於您在原始文章中的內容......只是它現在適用於3D(或任何形狀......)陣列!

+0

更新的問題! – 2014-11-20 16:59:30

+0

@KarlMorrison - 更新了我的答案! – rayryeng 2014-11-20 17:01:29

+0

@KarlMorrison - 無論如何,你的公式已經達到了-1,1。 – rayryeng 2014-11-20 17:02:25