我的稀疏矩阵有 300到900 行 3 列,我想要对此矩阵进行采样,即 20 整个Matrix矩阵的样本。如何在 Matlab 中对矩阵MAT
进行采样。
答案 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