deleting some of the arrays in a matrix based on a principle
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Pooneh Shah Malekpoor
am 28 Feb. 2022
Bearbeitet: Matt J
am 28 Feb. 2022
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![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/909715/image.jpeg)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/909715/image.jpeg)
3 Kommentare
Akzeptierte Antwort
Matt J
am 28 Feb. 2022
Bearbeitet: Matt J
am 28 Feb. 2022
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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!