我有一个矩阵,其初始化如下:
stateAndAction = zeros(11, 4);
随着时间的流逝,矩阵将被更新,以便在给定的索引处将有一个。因此,在任何给定时间,我们可能会遇到类似以下的内容
1 1 0 1
1 0 0 0
0 1 0 0
0 0 1 0
0 1 0 0
0 0 0 1
1 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
如何找到其中有一个的随机行和列?
这是我想到的功能签名:
[random_row_index, random_column_index] = findRandom(stateAndAction)
最佳答案
您可以使用find查找非零元素的位置,选择一个随机元素,然后将索引转换为数组中行/列的位置:
function [random_row_index, random_column_index] = findRandom(stateAndAction)
ids = find(stateAndAction==1);
random = randi([1,numel(ids)],1);
id=ids(random);
[random_row_index, random_column_index] = ind2sub(size(stateAndAction),id);
end