0
我創建了以下的數組:插入隨機數成多維陣列(-1和1之間)
array = zeros(64,1,10);
我想填充隨機數的整個陣列與-1和1與之間的間隔rand函數。
max=1
min=-1
array(:,:,:) = ((max-min).*rand(64,1) + min);
我創建了以下的數組:插入隨機數成多維陣列(-1和1之間)
array = zeros(64,1,10);
我想填充隨機數的整個陣列與-1和1與之間的間隔rand函數。
max=1
min=-1
array(:,:,:) = ((max-min).*rand(64,1) + min);
你爲什麼不只是使用rand
出來多維數據盒子?
array = rand(64,1,10);
另外,不要使用min
和max
作爲變量名。這些都是MATLAB中的實際功能,所以你會無意間在名字上隱藏功能。
鑑於你編輯的問題,你想生成-1
之間的值,以1
的3D陣列。 rand
只有0和1之間產生的數字,所以特技將乘以2的rand
輸出並減去1。因此:
array = 2*rand(64,1,10) - 1;
一般來說,您在上面寫式恰好變換數據,以便它適合於min
和max
之間。但是,我要提到的一點是,在進行此轉換之前,數據需要在[0,1]
之間正常化。因爲rand
的輸出已經保證了這一點,所以我們沒有什麼可擔心的。
因此,如果你這樣做:
minVal = -1;
maxVal = 1;
array = (maxVal-minVal)*rand(64,1,10) + minVal;
你已經實現[-1,1]
限制,你想開始。 maxVal - minVal
將變爲2,因爲1 - (-1) = 2
和minVal
將爲-1
,因此您將減去1.因此,我以前的代碼等同於您在原始文章中的內容......只是它現在適用於3D(或任何形狀......)陣列!
更新的問題! – 2014-11-20 16:59:30
@KarlMorrison - 更新了我的答案! – rayryeng 2014-11-20 17:01:29
@KarlMorrison - 無論如何,你的公式已經達到了-1,1。 – rayryeng 2014-11-20 17:02:25