怎么在matlab打乱矩阵顺序然后还原

2020-11-17 21:36:42 字数 3277 阅读 2338

1楼:匿名用户

m = randperm(100);

>> n = randperm(100);

>> k = m(n);

>> p(n) = k;

注释:m是源数据,n是随机数,k为打乱后的矩阵,p即为所求。

2楼:导超

因为你的这个是两个数的交换,要变回来很简单,再做一次类似的打乱。

>> a=[103,10,45];

>> b=[1,3,2];

>> m=a(:,b)

m =103 45 10

>> m(:,b)

ans =

103 10 45

就变回来了

3楼:匿名用户

这实际上是个抽象代数问题:

设p为一个长度为n置换,则连续用p置换n次后就还原了。

楼上用的就是这个原理。

matlab中已知一矩阵,如何将其中的已知的元素打乱顺序进行随机排列得到新的矩阵,如:

4楼:青山_独钓客

你的a矩阵错了吧,应该是6个元素,否则怎么可能得到2行3列?

给你分步了,很简单的:

a=[2 5 7 ;9 4 10];

b = [a(1,:) a(2,:)];

c = randperm(size(b,2));

d = b(c);

e = reshape(d,2,3);

5楼:匿名用户

reshape(a(randperm(numel(a))),size(a,1),size(a,2))

怎么用已知的随机矩阵打乱一幅**的像素位置,且能还原原**?求matlab程序,急!

6楼:志当存高远

如果你还没来完全退出自ps,图象还在,

就点历史记录bai

,想du退到那一步都行,

最多zhi20步。最上面的dao就是原始图像。

你就可以重做。图像关闭了

希望我的回答对你有所帮助

如有其他问题,可以继续追问,

您的采纳是我前进的动力!

在matlab中,如何实现将一个矩阵按行或列进行随机的重新排序?

7楼:匿名用户

假设行数或列数为n

vector = randperm(n);

vector是从1到n的整数随机排列的向量按照vector里各个元素的值重

新排列行列向量就可以了

假设待排列矩阵为m,排列后的矩阵为a

按列随机排列

a = zeros(size(m));

for i=1:n

a(:,i)=m(:,vector(i));end

在matlab中如何将一个行矩阵左右顺序颠倒

8楼:匿名用户

n = [ 1 2 3 4;

5 6 7 8;

9 10 11 12];

n_inv = n(:,end:-1:1);

output:

n_inv =

4 3 2 1

8 7 6 5

12 11 10 9

9楼:匿名用户

rot90(w,2)

flipdim(w,2)

matlab 重新排列打乱的矩阵的命令是什么

10楼:山野村夫

命令?a=[1 2 3;4 5 6;7 8 9];

b=[a(:,2),a(:,3),a(:,1)]

11楼:匿名用户

a=[123;456;789]

rot90(a)==[369;258;147]

matlab怎样将矩阵分块与分块矩阵还原

12楼:匿名用户

matlab将一个矩阵分成多个块矩阵可以用如下方法:

设矩阵x有p乘q个值(p和q都假设大于3),取出1到3行,1到3列的一小块矩阵x1,输入** x1=x(1:3,1:3)即可,前面1:

3是第1行到第3行,后面1:3表示第1列到第3列。

matlab把块矩阵合成一个矩阵

设矩阵a有p乘q个值,b矩阵有p乘m个值,则输入c=[a b],可以合成p乘(q+m)的一个大矩阵。行数相同,可以在列后面加列

设矩阵a有p乘q个值,b矩阵有m乘q个值,则输入c=[a;b],可以合成(p+m)乘q的一个大矩阵。列数相同,可以在行下面加行

求大神:如何用matlab将矩阵所有元素的位置打乱(即位置随机化)?小弟我变了一个程序,如下: 15

13楼:匿名用户

d=ones(20,20);

d(1,1)=0;

s=;%放在循环外

for i=1:20

yi=d(i,:);

q=randperm(length(yi));

yi=yi(q)

s=[s;yi]end

14楼:匿名用户

在程序最后加一个 s = reshape(s,20,20),就可以的啦

怎样用matlab按比例生成随机矩阵

15楼:小虾米

思路:第一步,把90个0,3个1,7个2按照顺序写出来;第二步,将这些数字的排列顺序随机打乱;第三步,写成10*10矩阵的形式。

matlab程序:

a = [0*ones(1,90),1*ones(1,3),2*ones(1,7)];%第一步

inx = randperm(100);

b = a(inx);%第二步

c = reshape(b,[10 10]);%第三步

16楼:匿名用户

可以这样做.

data=[zeros(1,90),ones(1,3),2*ones(1,7)]; %这是100个数

index=randperm(length(data)); %这个是产生一个1到100的一个随机排列

ok=data(index) %最后再将data中的数按index打乱