Matlab 数组中的随机分散数
我试图在MATLAB数组中随机分散不同的数字: 我有两个3,四个2,我想随机填充一个向量(大小10,1) 最终结果如下所示:Matlab 数组中的随机分散数,matlab,random,Matlab,Random,我试图在MATLAB数组中随机分散不同的数字: 我有两个3,四个2,我想随机填充一个向量(大小10,1) 最终结果如下所示: A = [1;3;1;2;3;2;2;1;1;2;1;1] 然后我想修正A中的值,但添加更多的随机元素,但只能替换为更高的数字: 例如,在上面的矩阵中,我将随机再加上两个2和两个3,给出类似的结果 A=[3;3;2;2;3;2;2;2;1;2;1;3] 你问题的后半部分需要澄清 你问题的后半部分需要澄清。第一部分 您可以使用: A = ones(1,12); %//
A = [1;3;1;2;3;2;2;1;1;2;1;1]
然后我想修正A
中的值,但添加更多的随机元素,但只能替换为更高的数字:
例如,在上面的矩阵中,我将随机再加上两个2和两个3,给出类似的结果
A=[3;3;2;2;3;2;2;2;1;2;1;3]
你问题的后半部分需要澄清
你问题的后半部分需要澄清。第一部分 您可以使用:
A = ones(1,12); %// original values
v = [3 3 2 2 2 2]; %// values to "disperse" in A
ind_replace = randsample(1:numel(A), numel(v)); %// index of entries to be replaced
A(ind_replace) = v;
如果没有randsample
(统计工具箱的一部分),请使用并选择前几个元素:
ind_replace = randperm(numel(A));
ind_replace = ind_replace(1:numel(v));
A(ind) = v;
第二部分 要仅替换等于1的条目,请执行以下操作:
v = [2 2 3 3]; %// values to "disperse" among the 1 values in A
ind_ones = find(A==1); %// index of entries which equal one
ind_replace = randsample(1:numel(ind_ones), numel(v)); %// index within the above
%// Or: ind_replace = randperm(numel(ind_ones));
%// ind_replace = ind_replace(1:numel(v));
A(ind_ones(ind_replace)) = v;
注意:这概括了第一部分,也就是说,当
A
的所有条目等于1时,也可以使用它。第一部分
您可以使用:
A = ones(1,12); %// original values
v = [3 3 2 2 2 2]; %// values to "disperse" in A
ind_replace = randsample(1:numel(A), numel(v)); %// index of entries to be replaced
A(ind_replace) = v;
如果没有randsample
(统计工具箱的一部分),请使用并选择前几个元素:
ind_replace = randperm(numel(A));
ind_replace = ind_replace(1:numel(v));
A(ind) = v;
第二部分 要仅替换等于1的条目,请执行以下操作:
v = [2 2 3 3]; %// values to "disperse" among the 1 values in A
ind_ones = find(A==1); %// index of entries which equal one
ind_replace = randsample(1:numel(ind_ones), numel(v)); %// index within the above
%// Or: ind_replace = randperm(numel(ind_ones));
%// ind_replace = ind_replace(1:numel(v));
A(ind_ones(ind_replace)) = v;
注意,这概括了第一部分,也就是说,当
A
的所有条目等于1时,也可以使用它。dan-感谢您的快速评论。我已经在原来的post.dan中澄清了下半部分-谢谢你的快速评论。我已经在原来的帖子中澄清了下半部分。