在MATLAB中将其分配给3D矩阵中的随机位置

时间:2015-01-17 11:33:52

标签: matlab

我有一个20x20x4的零矩阵,名为A。我想把它们放在随机位置,但有以下限制。

A(:,:,1)A(:,:,2)以及A(:,:,3)A(:,:,4)中的总和必须分别为50,60,120和90以及这些元素(我的意思是将1作为值)不应相互叠加。

如何在MATLAB中完成?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

确保没有元素相互叠加的方法是创建320到1到400之间的唯一值,并将0,50,60,120添加到循环中的相应元素。

b = [50, 60, 120, 90];
ind = randperm(n*n, sum(b));

A = zeros(n,n,4);
bb = [0 cumsum(b)]; 
for k = 1:size(A,3)     
   A((k-1)*n*n + ind(bb(k)+1:bb(k+1))) = 1;
end

根据knedlsepp的评论

编辑