I have the sparse Matrix having 300 to 900 rows with 3 columns, I want the sampling of this matrix i.e 20 samples of Matrix of the whole Matrix. How can I sample my matrix MAT
in Matlab.
user3396151
问问题
1018 次
2 回答
2
我假设您想要随机抽样(无需替换);也就是说,您想从矩阵中随机挑选n
元素。A
为此,您可以应用randsample
以下的线性化full
版本A
:
result = randsample(full(A(:)), n);
如果您想避免转换A
为full
(例如,由于内存限制),请使用
result = A(randsample(numel(A), n)); %// result in sparse form
或者
result = full(A(randsample(numel(A), n))); %// result in full form
于 2014-05-14T10:10:55.443 回答
2
我理解您的问题如下:
您有一个大小为 900x3 的矩阵,并且您想要一个仅包含第 400 到 500 行的矩阵
。
如果这是您正在寻找的,代码是
new_Mat = Mat(400:500,:)
这将返回一个包含第 400 到 500 行和所有列的新矩阵 (new_Mat)。如果您使用例如:
new_Mat = Mat(300:500,1:2)
它将返回第 300 到 500 行的前 2 列。
对于您想要第 x 个元素的问题,您可以使用坐标。您可以解决第 40 行和第 2 列的问题
Mat(40,2);
或者您使用一维地址。
Mat(80);
处理第 80 个元素,但小心他先计算行数,然后计算列数。所以它将是第 80 行,第 1 列。如果您不想使用固定值,则可以使用函数的返回值(1 维或 2 暗淡)或循环参数来寻址您的元素。
于 2014-05-14T06:31:10.917 回答