0

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.

4

2 回答 2

2

我假设您想要随机抽样(无需替换);也就是说,您想从矩阵中随机挑选n元素。A为此,您可以应用randsample以下的线性full版本A

result = randsample(full(A(:)), n);

如果您想避免转换Afull(例如,由于内存限制),请使用

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 回答