Creating permutations of vectors using basic matlab commands such as loops.

조회 수: 6 (최근 30일)
cody madsen
cody madsen 2019년 10월 28일
댓글: Daniel M 2019년 10월 28일
In the problem I have to take a vector x = [x1,x2,x3,x4] ,where 0 <= xi <= m, and m is an inputted integer.
For example if m = 1,
I would need to create vectors
[0,0,0,0]
[1,0,0,0]
[0,1,0,0]
[0,0,1,0]
[0,0,0,1]
[1,1,0,0]
all the way to [1,1,1,1]
  댓글 수: 2
Daniel M
Daniel M 2019년 10월 28일
편집: Daniel M 2019년 10월 28일
Do you have a specific question? What have you tried so far? Also, here is a cheeky way of getting your result:
M = dec2bin(0:15)-'0'; % where 15 is length(x)^2-1
cody madsen
cody madsen 2019년 10월 28일
편집: cody madsen 2019년 10월 28일
lets say that m = 4 so i would need all permutations of x = [x1,x2,x3,x4] where 0 <= xi <= 4. so I would need all permutations of [0,0,0,0],[1,0,0,0],[1,1,0,0],[1,1,1,0],[1,1,1,1],[2,0,0,0],[2,1,0,0] all the way to [4,4,4,4]
And I dont even know where to begin so I havent tried anything yet.
also i think i have to use a for-loop structure because i will have to use each of these permutations later in the second part of the problem.

댓글을 달려면 로그인하십시오.

답변 (1개)

Daniel M
Daniel M 2019년 10월 28일
You can do it in two lines of code by using ndgrid, and putting the four outputs column-wise into a matrix. That would be the most efficient way. If you're required to use loops, that is lame.
[a,b,c,d] = ndgrid(0:4);
M = [d(:) c(:) b(:) a(:)];
  댓글 수: 4
cody madsen
cody madsen 2019년 10월 28일
for example I would have T(x) = [x1,x2,x3,x4] and use a loop
something like
count = 0
for k= 1: (total number of vectors)
while T(k) ~= [0,0,0,0]
T(k) = (some manipulations)
count = count + 1
end
end
there is obviously more to it than that but that is as example of how I would be using the vectors later in the program
Daniel M
Daniel M 2019년 10월 28일
Right, but all the vectors would be stored as rows in the matrix T. We're saying the same thing. As for your algorithm, start by calculating how many iterations you'll need, given N number of elements and M number of spots. E.g. you already know for N = 5 (from 0:4) and M = 4 the number of rows of T is 625. But how is that calculated?
Then start very simply using only M = 2 and N = 2, and see if you can code that properly.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

제품


릴리스

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by