问题描述
|
一些小问题!
我如何在Matlab中创建一个N×N空单元格?
我有一个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个索引:(i,j)。如果它们都在indexs(C)的向量中,则选择它并将其索引保存在单元格中
这样的东西:D = {[2x1] [2x1]…}
非常感谢您的指导。
希望
================================================== ==============================
对于第二个:
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
但是问题在于它具有for结构并且非常慢。我正在寻找更快的东西。也许with6ѭ
解决方法
不知道我是否理解你的问题。但是我走了。
我首先将L的索引从下标转换为带有sub2ind的索引。然后,您可以使用结果索引生成D的向量化版本,并使用reshape为其提供最终的N-D版本。就像是:
LInd = sub2Ind(size(C),L,L)
Dvect = C(LInd);
D = reshape(D,Shape_I_Want);
希望这可以帮助