Simple operations with struct
    5 views (last 30 days)
  
       Show older comments
    
    Jórdan Venâncio Leite
 on 5 Apr 2020
  
    
    
    
    
    Commented: Image Analyst
      
      
 on 11 Jun 2020
            How to exclude elements of a struct with a value less than a limit?
For example, if a struct has only one field and this field has the values 220000 and 40000. How to exclude (make 0) only the values less than 50000?
1 Comment
  Image Analyst
      
      
 on 11 Jun 2020
				Original question before it gets edited away:
How to exclude elements of a struct with a value less than a limit?
For example, if a struct has only one field and this field has the values 220000 and 40000. How to exclude (make 0) only the values less than 50000?
Accepted Answer
  Ameer Hamza
      
      
 on 5 Apr 2020
        
      Edited: Ameer Hamza
      
      
 on 5 Apr 2020
  
      idx = [struct_name.fieldname] > 50000;
new_struct = struct_name(idx);
new_struct will only contain elements where the field name is greater than 50000.
If you don't want to delete those elements, and just want to set them to 0,
new_struct = struct_name;
idx = [new_struct.fieldname] > 50000;
[new_struct(idx).fieldname] = deal(0);
In this case, new_struct will have same elements as original struct_name but the elements set to 0.
0 Comments
More Answers (1)
  David Hill
      
      
 on 5 Apr 2020
        yourStuck.field(yourStuck.field<50000)=0;
1 Comment
  Ameer Hamza
      
      
 on 5 Apr 2020
				David, this syntax is not supported in MATLAB
s(1).a = 1;
s(2).a = 2;
s(3).a = 3;
s(4).a = 4;
s.a(s.a < 3) = 0;
Error using  < 
Too many input arguments.
Error in Test (line 6)
s.a(s.a < 3) = 0;
See Also
Categories
				Find more on Structures in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!