deleting some of the arrays in a matrix based on a principle
    4 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Pooneh Shah Malekpoor
 il 28 Feb 2022
  
    
    
    
    
    Modificato: Matt J
      
      
 il 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

3 Commenti
Risposta accettata
  Matt J
      
      
 il 28 Feb 2022
        
      Modificato: Matt J
      
      
 il 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 Commenti
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Surface and Mesh Plots in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


