我有一个由pop = [pop; x; y; z; cst,fr]生成的人口;其中前4行为x,后3行为y,第3行为z。 cst是第1列的总和,fr是第2列的计算失败率。
6 0.876
5 0.99
3 0.939
6 0.876
4 0.837
7 0.959
4 0.953
4 0.873
0 0
5 0.95
3 0.855
4 0.873
4 0.873
5 0.95
6 0.951
66 0.00032352
6 0.876
6 0.876
6 0.965
6 0.965
4 0.953
4 0.837
4 0.953
0 0
3 0.855
6 0.951
5 0.95
0 0
0 0
3 0.855
6 0.951
59 0.00038143
6 0.965
5 0.888
6 0.965
3 0.863
7 0.889
7 0.959
4 0.953
7 0.915
6 0.968
3 0.855
3 0.855
8 0.942
4 0.873
3 0.855
8 0.942
80 0.0002327
如何对特定的(16,32,48)行进行排序,然后不变(1:15,17:31,33:47)? 例如:
6 0.876
6 0.876
6 0.965
6 0.965
4 0.953
4 0.837
4 0.953
0 0
3 0.855
6 0.951
5 0.95
0 0
0 0
3 0.855
6 0.951
59 0.00038143
6 0.876
5 0.99
3 0.939
6 0.876
4 0.837
7 0.959
4 0.953
4 0.873
0 0
5 0.95
3 0.855
4 0.873
4 0.873
5 0.95
6 0.951
66 0.00032352
6 0.965
5 0.888
6 0.965
3 0.863
7 0.889
7 0.959
4 0.953
7 0.915
6 0.968
3 0.855
3 0.855
8 0.942
4 0.873
3 0.855
8 0.942
80 0.0002327
请帮忙!
答案 0 :(得分:0)
目前尚不清楚你想要什么样的订单,但如果你知道你想要一些特定的行排序如下:(16,32,48)行后跟不变(1:15,17:31,33:47)然后您可以像这样使用索引:
n = [16, 32, 48, 1:15, 17:31, 33:47]; % indexes for sorting
popsort = pop(n,:); %index into pop by rows
您可以使用各种技巧来创建索引向量n
。
现在,如果您正在调用循环并将新值附加到pop
,请执行以下操作:
pop = []
for n = 1:3
% calculate x, y, z, etc.
pop=[pop;x;y;z;cst,fr];
end
然后最好预先分配矩阵pop
并将值放在首位,或者使用两个变量,一个包含x,y,z
,另一个包含cst,fr
的值为。这样可以避免以后对行进行排序:
m = 3; % works for any number of loops
pop = zeros(m*15,2);
cst_fr = zeros(m,2);
for n = 0:m-1
% calculate x, y, z, etc.
pop(1+n*15:15+n*15,:)=[x;y;z];
cst_fr(n+1,:)=[cst,fr];
end