在Matlab中采样矩阵

时间:2014-05-14 06:06:27

标签: matlab random sparse-matrix sparse-array

我的稀疏矩阵有 300到900 3 列,我想要对此矩阵进行采样,即 20 整个Matrix矩阵的样本。如何在 Matlab 中对矩阵MAT进行采样。

2 个答案:

答案 0 :(得分:2)

我理解你的问题如下:
你有一个大小为例如矩阵的矩阵。 900x3,你想要一个只包含400到500行的矩阵。

如果您正在寻找此代码,则代码为

new_Mat = Mat(400:500,:)

这将返回一个新的Matrix(new_Mat),其中包含行400到500以及所有列。如果您使用例如:

new_Mat = Mat(300:500,1:2)

它将返回行300到500的前2列。

对于想要第x个元素的问题,您可以使用坐标。您可以在

上添加第40行和第2列
Mat(40,2);

或者你使用一维地址。

Mat(80); 

解决第80个元素,但小心他先计算行然后是列。所以它将是第80行第1列。如果您不想使用修正值,您可以使用函数的返回值(1维或2 dim)或循环参数来寻址元素。

答案 1 :(得分:2)

我假设您想要随机抽样(无需替换);也就是说,您想要随机选择矩阵n中的A个元素。为此,您可以在A的{​​{3}},randsample版本上应用linearized

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