2011-05-23 58 views
0

一些小問題!通過索引選擇單元格的某個元素 - 比結構更快

  1. 如何在matlab中創建一個空N-N單元?
  2. 我有一個n乘3矩陣

rv=... %# [N-by-3]

r=sqrt(sum(rv,2).^2); if r < b

statement1

end

聲明是保存r的指數在載體(如C)。 像這樣:C = [1 3 4 7 9,...] 通過使用該載體我想選擇一個n乘N矩陣 的一些元件的2D矩陣的每個元素有2個索引:(ⅰ, j)的。如果他們兩個在的指數(C)的載體,然後選擇它,將它保存的指數在細胞 事情是這樣的:d = {[2×1] [2×] ...} 非常感謝任何指導。 Whishes

============================================ =====================================

對於第二之一:

p=1 
for i=1:N 
    if r(i)<R 
     L(p)=i; 
     p=p+1; 
    end 
end 


L=[.....]; 

for i=1:length(L) 
    for j=1:length(L) 
     D{i,j}=C{L(i),L(j)}; 
    end 
end 

但問題是它有一個結構,非常緩慢。我正在尋找更快的東西。也許combnk

+0

我只想選擇是在我的列表中的元素。如果你有比D更好的建議(細胞),我熱切地聆聽。 – Abolfazl 2011-05-23 08:32:11

+1

對於第一個我認爲它是'A = cell(N);' – Abolfazl 2011-05-23 09:51:39

+0

你是指什麼意思由*索引* r? – Phonon 2011-05-23 13:14:58

回答

1

不知道如果我明白你的問題。但我在這裏。

我會先轉換升指數從標到指數與sub2ind。然後,您可以使用生成的索引生成D的矢量化版本,並使用重塑爲其提供所需的最終N-D版本。喜歡的東西:

LInd = sub2Ind(size(C), L, L) 
Dvect = C(LInd); 
D = reshape(D, Shape_I_Want); 

希望這有助於

相關問題