matlab 从向量中选择随机值,但不包括特定值

j5fpnvbx  于 2022-11-15  发布在  Matlab
关注(0)|答案(2)|浏览(200)

我认为这是一个简单的问题,但我找不到任何解决方案。
我有一个名为cues= ["R" "B" "C" "P" "Y" "G"];的向量,我想从其中随机选择一个值,但每次排除一个(或两个)值。
例如,我希望从不包括"R"值的向量中获得一个随机值,或者在第二种情况下,我不希望从样本中选择"R""Y"
我尝试过使用randsamplerandperm,但它们似乎都不包含此选项。

2admgd59

2admgd591#

要做到这一点,一种直观的方法是将所有值和排除项的列表拿出来,改为创建一个包含项的列表,然后您可以从该列表中进行选择。
请参阅每个步骤的备注:

cues= ["R" "B" "C" "P" "Y" "G"]; % All options
exclude = ["R" "Y"];             % Exclusions (could change in a loop or whatever)
include = setdiff( cues, exclude ); % Actual options without exclusions
selection = include( randi(numel(include)) ); % Random selection from options
sg3maiej

sg3maiej2#

看来我找到了一种方法来做到这一点。
对于字符串向量,可以使用erase函数来完成。例如:

cues_minusR = erase (cues,'R');

对于数字向量(例如,cues = [1 2 3 4 5 6]),其工作方式如下:

c1Col=1;
c2Col=2;
cues(c1Col, : ) = [];
cues([c1Col, c2Col], : ) = [];

相关问题