deleting some of the arrays in a matrix based on a principle
1 次查看(过去 30 天)
显示 更早的评论
Hello
I have a matrix of numbers for example: [10; 20; 30; 40; 50; 60; 70; 80; 90;...;160] which are assigned to a mesh in order, the same as the figure below(element size=10). I want to delete the numbers: 40, 80, 120, 160 based on a line which intersects this mesh and only retain [10;20;30;50;60;70;90;100;110;130;140;150] to be my output. How can I code this? Any suggestion is highly appreciated.
Best Regards
Pooneh
3 个评论
采纳的回答
Matt J
2022-2-28
编辑:Matt J
2022-2-28
A=reshape(10:10:160,4,4)
[M,N]=size(A);
[X,Y]=ndgrid(0:M-1,0:N-1);
test=@(x,y) y+4*x-12<=-1e-6; %test if x,y is below the line with 1e-6 tolerance.
keep=test(X,Y)|test(X+0.5,Y)|... %keep a cell if any of its 4 corners is below the line
test(X,Y+0.5) | test(X+0.5,Y+0.5);
result=A(keep)' %[10;20;30;50;60;70;90;100;110;130;140;150]
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!