Saving output of for loop in array

1 visualización (últimos 30 días)
Raphael Williams
Raphael Williams el 28 de Sept. de 2018
Comentada: Aquatris el 28 de Sept. de 2018
Hi, I am trying to save the output of my for loop in an array. Each output will consist of permutations of a previously defined array. I need to save the new array as consisting of my output in a single array.
The code is
Pload = linspace (1,2,4)
For i= eye(10)
P=Pload(randperm(length(Pload)
End
Now I'm trying to save the output in a new matrix.
Trying
Pnew(i,:)=P
Returns an error "index in position I is invalid"
Kindly help

Respuestas (2)

Aquatris
Aquatris el 28 de Sept. de 2018
Editada: Aquatris el 28 de Sept. de 2018
There are some mistakes and unclear parts in your code. However, using your code, you can save it as;
Pload = linspace (1,2,4)
for i= 1:10
P(i,:)=Pload(randperm(length(Pload)))
end
Unclear part: why are you calling "randperm" function with "length(Pload)" why are you calling "for i = eye(10)"
  2 comentarios
Raphael Williams
Raphael Williams el 28 de Sept. de 2018
Thanks for the response. The objective is to vary the values of the variable Pload 10 times while keeping the initial array structure of Pload intact. Hence since Pload is 1×4, and varied 10 times. I intend on storing the output as 1×40. I want to randomly change the position of each element after a loop, but I want the values to remain unchanged. Defining a solution space but rotating the position
Aquatris
Aquatris el 28 de Sept. de 2018
So since you want to convert the 1x4 to 1x40, you should do something like ;
Pload = linspace (1,2,4);
for i= 1:10
index(1+(i-1)*length(Pload):i*length(Pload)) = randperm(length(Pload));
end
Pnew = Pload(index);
Since the Pnew are possible solutions, it might be more convenient to store it as 10x4 matrix instead, in which case you can use below code;
for j =1:10;
Pnew2(j,:) = Pload(index(1+(j-1)*length(Pload):j*length(Pload)));
end

Iniciar sesión para comentar.


Stephen23
Stephen23 el 28 de Sept. de 2018
Editada: Stephen23 el 28 de Sept. de 2018
Pload = linspace(1,2,4);
N = numel(Pload);
P = repmat(Pload,10,1);
for k = 1:10
P(k,:) = P(k,randperm(N));
end
P = reshape(P.',1,[])

Categorías

Más información sobre Loops and Conditional Statements 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!

Translated by