2017-08-09 91 views
1

我有一個訂單矩陣100*10。現在的目標是用特定範圍內的隨機整數填充矩陣的每一列。現在問題是每列隨機數的範圍發生變化。例如,對於第一列,範圍爲[1,100],第二列爲-10 to 1,依此類推至第10列。如何用特定範圍的隨機數填充矩陣的列?

這是我已經試過:

b = [0,100;-10,1;0,1;-1,1;10,20] 
a = [] 
for i=1 to 10 
    a[] = [(i:100)' randi(1,100)] 
end 

如何產生這種形式的矩陣?

回答

2

我現在沒有安裝matlab,但我會做這樣的事情。

m = 100; 
n = size(b, 1); 
range = b(:, 2) - b(:, 1); 
offset = b(:, 1); 

A = round(bsxfun(@minus, bsxfun(@times, rand(m, n), range), offset); 

沒有環路將變成:

M = 100; 
N = size(b, 1); 

A = zeros(m, n); % preallocate to avoid matrix expansion 
for ii = 1:n 
    A(:, ii) = randi(b(ii,:), m, 1); 
end 
+0

使用錯誤* 內矩陣維度必須同意這是我得到 – OBX

+0

對於矩陣和矢量相乘,我想你需要使用'bsxfun ' –

+0

編輯這個答案或單獨的答案會很有幫助! – OBX