我想选择值周围的随机子矩阵。

时间:2015-04-13 02:13:05

标签: matlab

我想在随机子矩阵中重视..

例如...... 第一步,在矩阵中选择一个随机矩阵(nxn)" A"。 (选择搜索空间..) 第二步,从该矩阵中选择中间值。

另外,它是否可用?,首先选择" 22" (它是总矩阵中的随机数),第二个找到" 22"周围的矩阵。

我是使用MATLAB的新手,现在我正在努力学习MATLAB。这是非常有趣的!我很抱歉因为我英语能力很差..

1 个答案:

答案 0 :(得分:3)

对于矩阵A,此代码将随机选择大小为npart的分区。虽然可以在原始答案中使用randperm,但@LuisMendo在评论中指出randi更简单(事实上它也更快)。

npart = 3 ;
[m,n] = size(A) ;
ix = randi(m-npart+1) ;
iy = randi(n-npart+1) ;
X = A(ix:ix+npart-1,iy:iy+npart-1) ;

当然,最有效的方法是只采样一个随机变量并将索引转换回来:

[m,n] = size(A) ;
ind = randi( (n-npart+1)*(m-npart+1) ) ;
[ix,iy] = ind2sub([m-npart+1,n-npart+1],ind) ;
X = A(ix:ix+npart-1,iy:iy+npart-1) ;