Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 数组中的随机分散数_Matlab_Random - Fatal编程技术网

Matlab 数组中的随机分散数

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); %//

我试图在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); %// 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中澄清了下半部分-谢谢你的快速评论。我已经在原来的帖子中澄清了下半部分。