MATLAB Answers

# constant randperm in each iteration

14 views (last 30 days)
NA on 13 Feb 2019
Commented: Jan on 14 Feb 2019
all=[2;3;4;56;7;89;5;1;5;1;3;6;7;9];
changed=9;
p = randperm(size(all,1));
p(1:changed)=[];
t=all/2
t(p)=0;
I want to run this code 10 times and want to have a same t in each iteration.
I tried to use 'seed' but have error.

#### 3 Comments

Jan on 13 Feb 2019
I tried to use 'seed' but have error.
Then please post the code and the error message.
NA on 14 Feb 2019
all=[2;3;4;56;7;89;5;1;5;1;3;6;7;9];
changed=9;
p = randperm('seed',size(all,1));
p(1:changed)=[];
t=all/2
t(p)=0;
Error using randperm
Inputs must be nonnegative scalar integers.
Jan on 14 Feb 2019
Please take the time to read the documentation if you have a problem with a command:
doc randperm
You cannot provide a 'seed' for this command. Trying this is pure guessing, and this must fail soon. Only the random number generator can be seeded.

Sign in to comment.

### Accepted Answer

Steven Lord on 13 Feb 2019
First, you should probably use a different variable name for your vector of data. all already has a meaning in MATLAB.
Second, define a fixed variable before whatever loop you're using to iterate then set t to that fixed variable at the start of each iteration.
fixedt = allVector/2;
for iterations = 1:10
t = fixedt;
% do stuff with t
end

#### 1 Comment

Jan on 14 Feb 2019
@Naime: Of course. If you want a variable to have the same value for all iterations, define it outside the loop and do not change it inside.

Sign in to comment.

### Community Treasure Hunt

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

Start Hunting!