how to simplify a series of command
    1 view (last 30 days)
  
       Show older comments
    
hi, I did not study MATLAB systematically so this might be a basic question. is there a common method to simplifying series of commands like the first 34 lines of this file?  Thank you.
0 Comments
Accepted Answer
  Dyuman Joshi
      
      
 on 15 Jun 2023
        
      Edited: Dyuman Joshi
      
      
 on 15 Jun 2023
  
      This is the downside of dynamically naming variables. 
Define an array instead of defining variables individually and use a loop - 
%Defining an array where one can easily access values via simple indexing 
p=[0,0,2; 2,0,2; 2,0,-1; -2,0,-1; -2,0,0; -1,0,1];
Q=[-1,0,0; 0,0,1; 2,0,0];
s1 = size(Q,1);
s2 = size(p,1);
%pre-allocation
out = zeros(s2,s1);
for m=1:s1
    out(:,m)=1./vecnorm(Q(m,:)-p,2,2);
end
%Here (i,j) element of out corresponds to the value PQipj
out
Edit - If you have the Stats and ML Toolbox, you can achieve the result in one line of code -
OUT = 1./pdist2(p,Q)
1 Comment
More Answers (0)
See Also
Categories
				Find more on Loops and Conditional Statements 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!
