Given vector with N entries, generate all combinations with K entries such that K > N, vector entries can repeat
    6 views (last 30 days)
  
       Show older comments
    
I'm writing a script to work some ideas I had with eigenvalues in a triangular matrix, and part of that is generating all the possible permutations of the eigenvalues in an arbitrarily sized matrix. To do this I want to generate vectors I can feed into the diag(v) function where v is composed solely of 1x1 symbolic variables.
For example: I have 2 symbolc variables a and b, that I want to feed into a 4x4 matrix so that I get all combinations of a and b across the main diagonal. This would create a matrix (or a set of vectors) that looks something like:
[a a a a
 a a a b
 a a b a
 a b a a
 a a b b
 a b a b
 a b b a
 a b b b
 b b b b
 b b b a
 b b a b
 b a b b
 b b a a
 b a b a
 b a a b
 b a a a]
which I'll then be able to iterate over to feed into diag.
Thanks!
0 Comments
Accepted Answer
More Answers (2)
  Matt J
      
      
 on 20 Oct 2023
        
      Edited: Matt J
      
      
 on 20 Oct 2023
  
      Starting with R2023a,
syms a b
k=4;
v=repmat( {[a,b]},1,k);
result=table2array(combinations(v{:}))
4 Comments
  Bruno Luong
      
      
 on 20 Oct 2023
				
      Edited: Bruno Luong
      
      
 on 20 Oct 2023
  
			I prefer cell array for mixed data types (would not know if I ever use that use case), array on pure numerical data.
At least I want an option to do it. Table is NOT a serious computing data types in my opinion. Nobody really knows the internal structure and complexity of accessing data (what I know is row access is poor). I would not use it in any program excepted for importing data, and final reprentation for user interface.
  Voss
      
      
 on 20 Oct 2023
        syms a b
v = [a b];
n = numel(v);
k = 4;
result = v(dec2base(0:n^k-1,n)-'0'+1)
0 Comments
See Also
Categories
				Find more on Number Theory 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!





