通过索引选择单元格的某些元素-比结构更快

问题描述

| 一些小问题! 我如何在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);
希望这可以帮助     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...