【问题标题】:Semi-randomization of matrix矩阵的半随机化
【发布时间】:2014-06-25 14:08:11
【问题描述】:

我创建了矩阵:A,随机数为 1-8,每个元素每行重复 4 次,A 有 6 行,32 列。我知道有更优雅的方法可以做到这一点,但我是一个 matlab 初学者,因此我使用了我所拥有的知识......

A1 = [1:8,1:8,1:8,1:8];
A1 = A1(randperm(length(A1)));
A2 = [1:8,1:8,1:8,1:8];
A2 = A2(randperm(length(A2)));
A3 = [1:8,1:8,1:8,1:8];
A3 = A3(randperm(length(A3)));
A4 = [1:8,1:8,1:8,1:8];
A4 = A4(randperm(length(A4)));
A5 = [1:8,1:8,1:8,1:8];
A5 = A5(randperm(length(A5)));
A6 = [1:8,1:8,1:8,1:8];
A6 = A6(randperm(length(A6)));
Aall(1,:)=A1;
Aall(2,:)=A2;
Aall(3,:)=A3;
Aall(4,:)=A4;
Aall(5,:)=A5;
Aall(6,:)=A6;

现在我想使用功能。我很难创建此功能...任何帮助表示赞赏!并且同一行中同一元素的连续重复(例如 5 5)是不允许的。如何在一个函数中实现它?

【问题讨论】:

  • 你说 - "first element of each row is unequal to all the other ones"。其他是指其他行的其他第一个元素还是同一行中的其他元素?
  • 我的意思是其他行的第一个元素,对不起!

标签: matlab function random matrix


【解决方案1】:

我会提出这个解决方案

for j=2:6
    while max(Aall(j,1)==Aall(1:j-1,1))
        z = randperm(size(Aall,2));
        Aall(j,:)=Aall(j,z);
    end;
end;

在这里,我们从第一列中的一个元素到另一个元素,并将其与所有前面的元素进行比较。如果发现巧合,则该行的元素会重新排列,直到我们得到一个与其他元素不同的值。

【讨论】:

    猜你喜欢
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    相关资源
    最近更新 更多