2014-09-28 92 views
2
numSeg = 10;  %Set number of segments 
wSeg = 10;  %Set segment width 
x = ones(1,numSeg*wSeg); 

什麼是自動爲每個創建的段提供變量的最有效方法?例如:將矩陣的部分分離爲變量 - MATLAB

bin1 = x(1:10) 
bin2 = x(11:20) 

等等。

最終,我會生成一些隨機(1:numSeg)挑一箱,然後修改它:

enter image description here

我主要是卡在如何能夠引用的特定區域一個使用變量名或數字(如bin數)的矩陣,這樣我就可以進行變更 - 這只不過是將'x'中的選定區域乘以另一個寬的矩陣。我寧願沒有手動指定每個BIN1,BIN2,BIN3等

+0

我需要x爲1:numSeg * wSeg,但填充1。 – AnnaSchumann 2014-09-28 13:36:12

+0

圖像顯示'x = 1:100',意思是'x = [1,2,3,4 ... 100]',而代碼讀取'x = ones(1,100)',即'x = [ 1,1,1,... 1(100次)]'。所以,這可能會讓其他人感到困惑。我仍然認爲'x'必須是'1:100',即[1,2,... 100]而不是全部1,因爲在後一種情況下,不需要索引到'x',因爲任何索引進入所有的數組只會產生一個。 – Divakar 2014-09-28 14:02:03

回答

2
for segment_id = 1:numSeg 
    bin = x((segment_id-1)*wSeg+1 : segment_id*wSeg) %// x values for each segment. 
     %// So, for segment_id = 1, you would have bin as x(1:10) 
     %//  for segment_id = 2, you would have bin as x(11:20) 
     %// ........ 
     %//  for segment_id = 10, you would have bin as x(91:100) 
end 

所以,你可以得到一個隨機SEGMENT_ID與segment_id = randi([1 numSeg]),然後使用 -

得到二進制數值的那個特定的隨機段。

舉個例子,我輸入 -

segment_id = randi([1 numSeg]) 

我 -

segment_id = 
    7 

然後,我用bin = x((segment_id-1)*wSeg+1 : segment_id*wSeg)這給了我 -

ans = 
    61 62 63 64 65 66 67 68 69 70 
+0

我不確定這是否解決了我的問題。我很抱歉,因爲我可能讓我原來的帖子不清楚 - 我已經更新了它。 – AnnaSchumann 2014-09-28 12:43:31

+0

@AnnaSchumann檢查編輯,如果他們現在有意義。 – Divakar 2014-09-28 13:43:44

+0

這是完美的。謝謝。 – AnnaSchumann 2014-09-28 13:51:15

0

基本上你在做什麼尋找的是如何以便於訪問/使用的格式存儲每個垃圾箱的索引。當然有很多方法可以做到這一點。這是我個人認爲效果很好的一個,但是你的里程可能會有所不同。

你已經擁有:

numSeg = 10;  %//Set number of segments 
wSeg = 10;  %//Set segment width 
x = ones(1,numSeg*wSeg); 

創建索引,並將其存儲在單元陣列:

linear_indices = 1:numSeg*wSeg; %// row vector 
bin = mat2cell(linear_indices,1,ones(1,numSeg)*wSeg); %// cell array gives flexibility in bin size, if you need it 

使用索引來訪問斌4:

x(bin{4}); 
+0

有趣的方法。謝謝。定義'bin'的最後一行當前返回錯誤:'使用mat2cell的錯誤(行107) 輸入參數D1到D2必須求和到輸入矩陣大小的每個維度[1 100]。'但我不是確定是什麼造成了這一點。 – AnnaSchumann 2014-09-28 13:44:31

+0

@AnnaSchumann它現在已經修復 - 我忘記了mat2cell的參數要求 - 試試看。隨着項目的推進,能夠將任意索引集合保存爲分區可能是有益的,而不是將規則硬編碼到實際索引步驟中。至少應該更容易記錄和維護這種方式。 – tmpearce 2014-09-28 15:52:16