as example :
A = [8 9 0]
Perm1 = randperm(length(A));
B= A(:,Perm1);
B_eks=B
[val_sort, id_sort] = sort(Perm1);
A_eks = B_eks(:,id_sort);
i want it for looping, so A_eks(:,:,1) = [8 9 0],;A_eks(:,:,2) = [8 9 0],A_eks(:,:,2) = [8 9 0],A_eks(:,:,4) = [8 9 0], i have try like this:
for i=1:4
Perm1(:,:,i) = randperm(length(A));
B(:,:,i)= A(:,Perm1(:,:,i));
B_eks(:,:,i)=B(:,:,i)
end
for k=1:4
[val_sort, id_sort] = sort(Perm1(:,:,k));
A_eks(:,:,k) = B_eks(:,id_sort);
end
but it didn't work like i want, what should i do ?

6 Comments

A = [8 9 0]
Perm1 = randperm(length(A));
B= A(:,Perm1);
B_eks=B
[val_sort, id_sort] = sort(Perm1);
A_eks = B_eks(:,id_sort);
This piece of code gives you back A again....why to do? :(
KL
KL on 25 Oct 2017
Maybe your example with just 3 elements (as KSSV says, they are already sorted!) is not sufficient, probably you need to explain your input and expected output better.
KL
KL on 25 Oct 2017
@cvklpstunc: permuted indices are being sorted, which makes the permutation itself redundant. A_eks will all be the same as A.
@KSSV @KL: yes, i need it to be A again, because i use it for extraction from watermarked video. the watermark is apply to every frame, so a_eks needs to be the same with A. is it answer ur question ?
@cvklpstunc : i want my data permutated in random position for it secure. is there easier way for it?
thanks all ^^
If you want it to be same..keep it same....why to run all the stuff? Using randperm is good if you want to permute array randomly.
@KSSV : well.. i want it to be more secure than just keep it the same...^^

Sign in to comment.

 Accepted Answer

KL
KL on 25 Oct 2017
Change
A_eks(:,:,k) = B_eks(:,id_sort);
to
A_eks(:,:,k) = B_eks(:,id_sort,k);

More Answers (0)

Categories

Tags

Asked:

on 25 Oct 2017

Commented:

on 25 Oct 2017

Community Treasure Hunt

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

Start Hunting!