selecting rows from C with associated values in D, while using A and B values as references to produce E and F matrices
1 次查看(过去 30 天)
显示 更早的评论
Hi everyone, I have 2 matrices, A and B, that I want to use as reference to draw out certain rows in C and attached associated values from D.
A = [1 2];
B = [1 3];
C = [ 1 19 18 4 3 0 0 0 0 0 0
1 19 2 17 6 7 5 4 3 2 0
1 16 15 17 6 7 5 4 3 2 0
1 19 2 3 0 0 0 0 0 0 0
1 16 15 14 9 8 7 5 4 3 2
1 16 15 14 9 6 5 4 3 2 0
1 2 3 0 0 0 0 0 0 0 0
];
D = [0.1
0.3
0.4
0.8
0.9
0.11
0.2
];
my end results for E and F should be:
E = [0.1 1 19 18 4 3 0 0 0 0 0 0
0.8 1 19 2 3 0 0 0 0 0 0 0
0.2 1 2 3 0 0 0 0 0 0 0 0
];
F = [0.3 1 19 2 17 6 7 5 4 3 2 0
0.4 1 16 15 17 6 7 5 4 3 2 0
0.9 1 16 15 14 9 8 7 5 4 3 2
0.11 1 16 15 14 9 6 5 4 3 2 0
];
2 个评论
采纳的回答
Bruno Luong
2019-9-14
编辑:Bruno Luong
2019-9-14
A = [1 2];
B = [1 3];
C = [ 1 19 18 4 3 0 0 0 0 0 0;
1 19 2 17 6 7 5 4 3 2 0;
1 16 15 17 6 7 5 4 3 2 0;
1 19 2 3 0 0 0 0 0 0 0;
1 16 15 14 9 8 7 5 4 3 2;
1 16 15 14 9 6 5 4 3 2 0;
1 2 3 0 0 0 0 0 0 0 0
];
D = [0.1;
0.3;
0.4;
0.8;
0.9;
0.11;
0.2
];
[i,j] = find(C);
getC = @(pickfun) C(sub2ind(size(C),(1:size(C,1))',accumarray(i(:),j(:),[],pickfun)));
filtFun = @(x) ismember([getC(@min),getC(@max)],x,'rows');
b = filtFun(B);
E = [D(b,:),C(b,:)]
b = filtFun(A);
F = [D(b,:),C(b,:)]
更多回答(1 个)
per isakson
2019-9-14
编辑:per isakson
2019-9-15
The script
%%
ixe = [1,4,7];
E = cat( 2, D(ixe), C(ixe,:) );
ixf = setdiff( [1:7], ixe );
F = cat( 2, D(ixf), C(ixf,:) );
calculates E and F that agrees with your sample.
However, I cannot see how the rows 1, 4 and 7, honors the rules you provide in your comment.
In response to comment
ixe = find_rows( C, B );
E = cat( 2, D(ixe), C(ixe,:) );
ixf = find_rows( C, A );
F = cat( 2, D(ixf), C(ixf,:) );
%
function ix_rows = find_rows( C, FL );
ix_rows = nan( 1, size(C,1) );
for jj = 1 : size( C, 1 )
row = C(jj,:);
row(row==0) = [];
if row(1)==FL(1) && row(end)==FL(2)
ix_rows(jj) = jj;
end
end
ix_rows( isnan( ix_rows ) ) = [];
end
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!