Is it possible to find corresponding row from other matrix's row??
1 次查看(过去 30 天)
显示 更早的评论
y = [ 90 90 -45 0 0 45 45 0 -45 15 15;
90 90 -45 0 0 45 45 0 -45 15 15;
90 90 -45 0 0 45 45 0 -45 15 0;
90 90 -45 0 0 45 45 0 -45 15 0;
90 90 -45 0 0 45 45 0 -45 15 15;
90 90 -45 0 0 45 45 0 -45 15 15;];
y0 = sort(y,2);
y = y(sum([ones(size(y,1),1),diff(y0,[],2)~=0],2) >= numel(unique(y)),:);
y = permute(y ,[3 2 1]);
for k = 1:size(y,3)
[x0(:,:,k), x00(:,:,k)] = hist(y(:,:,k), unique(y(:,:,k)));
end
x0 =permute(x0,[3 2 1]); x00 =permute(x00,[3 2 1]);
x0(any(x0<2,2),:) = [];
I have to find corresponding row of "x00"
2 个评论
Matthew Eicholtz
2016-3-8
Your question is a little confusing. Can you try rewording for clarity?
Where do you actually need help? In the last part?
Stephen23
2016-3-9
Continuation of this question:
采纳的回答
Stephen23
2016-3-9
编辑:Stephen23
2016-3-9
It is easy, you just need to assign the logical conditions to an index variable. So instead of this:
x0(any(x0<2,2),:) = [];
you should allocate that logical condition to a variable:
idx = any(x0<2,2);
and then you can use idx for any of the matrices:
>> xdel = x0(idx,:)
xdel =
2 4 1 2 2
2 4 1 2 2
>> xnew = x0(~idx,:)
xnew =
2 3 2 2 2
2 3 2 2 2
2 3 2 2 2
2 3 2 2 2
and now you can try x00(idx,:) and x00(~idx,:) yourself!
更多回答(1 个)
Ced
2016-3-8
编辑:Ced
2016-3-8
I am not sure I understood the full question, but in short, you want to delete rows in which there is an element < 2 ? You basically already answered the question. Since you like one liners, I think this should do the trick:
x(any(x<2,2),:) = [];
This finds all rows (DIM 2) in which there is ANY element smaller than 2, selects these rows, and deletes them.
If you want to match your centers, you can do:
rows_del = any(x<2,2);
x(rows_del,:) = [];
z(rows_del,:) = [];
0 个评论
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!