Saving output of for loop in array

1 ビュー (過去 30 日間)
Raphael Williams
Raphael Williams 2018 年 9 月 28 日
コメント済み: Aquatris 2018 年 9 月 28 日
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

回答 (2 件)

Aquatris
Aquatris 2018 年 9 月 28 日
編集済み: Aquatris 2018 年 9 月 28 日
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 件のコメント
Aquatris
Aquatris 2018 年 9 月 28 日
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

サインインしてコメントする。


Stephen
Stephen 2018 年 9 月 28 日
編集済み: Stephen 2018 年 9 月 28 日
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,[])

Community Treasure Hunt

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

Start Hunting!

Translated by