# code that randomly changes columns in matrix throws error

1 view (last 30 days)
Berfin Çetinkaya on 23 Mar 2022
Commented: Voss on 23 Mar 2022
I have a matrix
This matrix consists of four rows. Some numbers are integers and some are decimals. I want to print a code on this matrix, but it gives an error like this:
Error using randperm
Size inputs must be integers.
Error in deneme (line 49)
new_idx = randperm(size(D,2)/2)*2-[1; 0];
>>
My code is :
new_idx = randperm(size(D,2)/2)*2-[1; 0];
rassalnew= D(:,new_idx(:))
What can I do to fix this problem?
Thank for help
D matrix:
1 2 3 4
510.090000000000 26.4600000000000 22.3400000000000 188.300000000000
510.090000000000 26.4600000000000 22.3400000000000 169.680000000000
510.090000000000 26.4600000000000 22.3400000000000 188.300000000000

Voss on 23 Mar 2022
Edited: Voss on 23 Mar 2022
It seems to be working for that matrix D:
D = [ ...
1 2 3 4
510.090000000000 26.4600000000000 22.3400000000000 188.300000000000
510.090000000000 26.4600000000000 22.3400000000000 169.680000000000
510.090000000000 26.4600000000000 22.3400000000000 188.300000000000];
new_idx = randperm(size(D,2)/2)*2-[1; 0];
rassalnew= D(:,new_idx(:))
rassalnew = 4×4
3.0000 4.0000 1.0000 2.0000 22.3400 188.3000 510.0900 26.4600 22.3400 169.6800 510.0900 26.4600 22.3400 188.3000 510.0900 26.4600
But you will get that error if D has an odd number of columns:
D = [ ...
0 1 2 3 4
300 510.090000000000 26.4600000000000 22.3400000000000 188.300000000000
400 510.090000000000 26.4600000000000 22.3400000000000 169.680000000000
200 510.090000000000 26.4600000000000 22.3400000000000 188.300000000000];
new_idx = randperm(size(D,2)/2)*2-[1; 0];
Error using randperm
Size inputs must be integers.
rassalnew= D(:,new_idx(:))
Berfin Çetinkaya on 23 Mar 2022
Thanks a lot of :)
Voss on 23 Mar 2022
You're welcome!