【发布时间】:2014-08-24 00:09:07
【问题描述】:
假设我有两个向量( Elem 和 Dren )。 Dren 中的每一行表示来自 Elem 的元素的可能组合的总和。 ID 是一个行数与 Dren 相同的数组,存储了 Dren 中每一行对应的 Elem 的索引。
例子:
Elem = [3 2 6];
Dren = [3; 2; 6; 5; 9; 8; 11];
ID = [ 1 0 0;
2 0 0;
3 0 0;
1 2 0;
1 3 0;
2 3 0;
1 2 3];
然后我为 Elem 和 Dren 使用了一个网格来获取这些值的所有可能对,并创建了一个新数组 ( R ) 及其比率,如下所示:
[E,D]=meshgrid(Elem,Dren);
for line=1:size(E,1)
for col=1:size(E,2)
R(line,col)=D(line,col)./E(line,col);
end
end
这给了我:
R =
1.0000e+000 1.5000e+000 5.0000e-001
6.6667e-001 1.0000e+000 3.3333e-001
2.0000e+000 3.0000e+000 1.0000e+000
1.6667e+000 2.5000e+000 8.3333e-001
3.0000e+000 4.5000e+000 1.5000e+000
2.6667e+000 4.0000e+000 1.3333e+000
3.6667e+000 5.5000e+000 1.8333e+000
我已经过滤了R的结果,选择了低于6的,所以我得到:
R6 = R(find(R<6))
R6 =
1.0000e+000
6.6667e-001
2.0000e+000
1.6667e+000
3.0000e+000
2.6667e+000
3.6667e+000
1.5000e+000
1.0000e+000
3.0000e+000
2.5000e+000
4.5000e+000
4.0000e+000
5.5000e+000
5.0000e-001
3.3333e-001
1.0000e+000
8.3333e-001
1.5000e+000
1.3333e+000
1.8333e+000
现在我想创建一个新数组,将这些过滤后的值存储在第一列中,并显示与它们等效的 ID 中的行值。换句话说,第一列是 R(find(R
例如,对于 R6(1,1)= 1.0000e+000,我们知道它是从 D(1,1)=3 计算出来的,所以对应的 ID 行是 [1 0 0]。因此,数组的第一行将是:
Store(1,:) = [ 1.0000e+000 1 0 0 ]
如何对 R6 中的所有元素执行此操作?
【问题讨论】:
-
我能够解决我的问题。还是谢谢!
-
@HelP - awww....我刚刚为你解决了:(。你能检查一下我的解决方案是否正确吗?
-
@rayryeng 是的,你是对的,伙计!感谢您的时间和帮助;)
-
@HelP - 啊哈!我的荣幸伙计:)。不过,我很高兴您自己解决了这个问题。这些是最好的胜利。感谢您接受我的回答:)
标签: arrays matlab indexing mesh