Given vector with N entries, generate all combinations with K entries such that K > N, vector entries can repeat
    6 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Alexander
 el 20 de Oct. de 2023
  
    
    
    
    
    Editada: Bruno Luong
      
      
 el 20 de Oct. de 2023
            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 comentarios
Respuesta aceptada
Más respuestas (2)
  Matt J
      
      
 el 20 de Oct. de 2023
        
      Editada: Matt J
      
      
 el 20 de Oct. de 2023
  
      Starting with R2023a,
syms a b
k=4;
v=repmat( {[a,b]},1,k);
result=table2array(combinations(v{:}))
4 comentarios
  Bruno Luong
      
      
 el 20 de Oct. de 2023
				
      Editada: Bruno Luong
      
      
 el 20 de Oct. de 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
      
      
 el 20 de Oct. de 2023
        syms a b
v = [a b];
n = numel(v);
k = 4;
result = v(dec2base(0:n^k-1,n)-'0'+1)
0 comentarios
Ver también
Categorías
				Más información sobre Number Theory en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!






