2011-05-23 31 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); 

希望这有助于

相关问题