- column 1 of xab is less than 6, AND
- column 1 of xbc is less than 6, AND
- column 1 of xcd is less than 6
How to operate > and > to extract a matrix?
2 次查看(过去 30 天)
显示 更早的评论
Dear all, I have a matrix and i need to extract a smaller matrix based on a condition, this condition took the following shape as Mr Walter once advised me, xab and xbc and xcd are from different columns, but when i run it i found that the new matrix Qua1 took a value that is larger than 6 ! how can i fix this please.
mask1 = xab(:,1)<6 & xbc(:,1)<6 & xcd(:,1)<6;
Qua1=M(mask1, :);
0 个评论
采纳的回答
Image Analyst
2017-11-18
编辑:Image Analyst
2017-11-18
You are getting a mask for this situation
In other words, where all 3 columns of those 3 different arrays are less than 6.
mask1 could be false if any of the x matrices were more than 6 but not all 3, for example 2 were 5 but one of them was 7. Qua1 should not take that row however since mask1 would be false there for that row.
Then you are taking rows where that is the case from M. However, the values of M can be ANYTHING and have no relation to what the values of the x matrices are. The values in M could be up in the millions.
If you want to clip Qua1 to 6, then you can do this:
Qua1(Qua1>=6) = 6;
7 个评论
Image Analyst
2017-11-19
They ARE being applied at the same time. Let's make the 3 conditions more explicit so you can see that:
condition1 = 0.1*3.28084*M(:,8) < 6
condition2 = 0.1*3.28084*M(:,10) < 6
condition3 = 0.1*3.28084*M(:,12) < 6;
% Find out which rows meet ALL 3 conditions at the same time.
all3Conditions = condition1 & condition2 & condition3;
% Extracts ALL columns in M but only
% in those rows meeting all 3 conditions.
Qua1 = M(all3Conditions , :);
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!