【问题标题】:Random numbers over periods (Using logical)期间的随机数(使用逻辑)
【发布时间】:2011-11-22 09:05:27
【问题描述】:

使用下面的代码:

t=10;
period=9;
A=zeros(36,36,t);
for j=1:t
   A(7:period:end,7:period:end,j)=rand(1,1);
   A(8:period:end,8:period:end,j)=rand(1,1);
   A(9:period:end,9:period:end,j)=rand(1,1);
end

编辑:这是 A。我在视觉上将它们分成 9x9,以便更容易看到模式。

0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0   0 0 0 0 0 0 1 0 0   0 0 0 0 0 0 1 0 0   0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1 0   0 0 0 0 0 0 0 1 0   0 0 0 0 0 0 0 1 0   0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 1   0 0 0 0 0 0 0 0 1   0 0 0 0 0 0 0 0 1   0 0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0   0 0 0 0 0 0 1 0 0   0 0 0 0 0 0 1 0 0   0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1 0   0 0 0 0 0 0 0 1 0   0 0 0 0 0 0 0 1 0   0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 1   0 0 0 0 0 0 0 0 1   0 0 0 0 0 0 0 0 1   0 0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0   0 0 0 0 0 0 1 0 0   0 0 0 0 0 0 1 0 0   0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1 0   0 0 0 0 0 0 0 1 0   0 0 0 0 0 0 0 1 0   0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 1   0 0 0 0 0 0 0 0 1   0 0 0 0 0 0 0 0 1   0 0 0 0 0 0 0 0 1

0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0   0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0   0 0 0 0 0 0 1 0 0   0 0 0 0 0 0 1 0 0   0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1 0   0 0 0 0 0 0 0 1 0   0 0 0 0 0 0 0 1 0   0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 1   0 0 0 0 0 0 0 0 1   0 0 0 0 0 0 0 0 1   0 0 0 0 0 0 0 0 1

我想将每个标记为 1 的数字设为 0 到 1 之间的随机数。是否有必要创建一个向量(48,1),然后插入 1 所在的值?


当然,这些数字不是完全随机的,每个“周期”都会复制相同的三个随机数字。

有没有一种简单的方法可以创建随机数,使每个随机生成的值都是随机的?

非常感谢。

【问题讨论】:

  • 你能更全面地描述你想要的输出吗?

标签: matlab random matrix


【解决方案1】:

这比我一开始想的要复杂一些。这是我的解决方案:

A = zeros(36,36,t);
idx = sub2ind([36 36 t],repmat(34:36,1,t),repmat(34:36,1,t),repmat(1:t,1,3));
A(idx) = rand(length(idx),1);

逻辑索引的解决方案是:

A(logical(A)) = rand(nnz(A),1);

但你必须准备A作为问题中给出的二进制矩阵。

【讨论】:

  • 精妙绝伦,稍加编辑,就可以完美地满足我的需求。谢谢!逻辑似乎是一个非常有用的命令。
  • 是的,逻辑索引很棒。我原来的解决方案不对,所以我写了上面的,然后当我看到你想通了的时候又把原来的加了回去。很高兴你得到它。
猜你喜欢
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-13
  • 1970-01-01
相关资源
最近更新 更多