我想知道如何创建一个由 n 个列组成的矩阵,其中每一列是方式的分布0:0.01:1
我理想地想要的是一种ndgrid
形式
[x1,x2,x3...,xn] = ndgrid(0:0.01:1,0:0.01:1.....m times)
我的约束是行应该加起来为 1。也就是说,我只会保留上面网格中加起来为 1 的那些行的索引。但是你可以理解,这太大而无法计算。因此,我正在寻找实现这一目标的简短/有效的方法。我将不胜感激任何帮助。
我想知道如何创建一个由 n 个列组成的矩阵,其中每一列是方式的分布0:0.01:1
我理想地想要的是一种ndgrid
形式
[x1,x2,x3...,xn] = ndgrid(0:0.01:1,0:0.01:1.....m times)
我的约束是行应该加起来为 1。也就是说,我只会保留上面网格中加起来为 1 的那些行的索引。但是你可以理解,这太大而无法计算。因此,我正在寻找实现这一目标的简短/有效的方法。我将不胜感激任何帮助。
如果您只有一个二维矩阵并且想要过滤它,那么只有相加的行1
可以通过求和和比较所有行然后将其用作索引来实现:
>> A=[0.1,0.3,0.3,0.3; % adds up to 1
0.5,0.4,0.1,0.4; % adds up to 1.2
0.4,0.2,0.1,0.3; % adds up to 1
0.0,0.1,0.5,0.0] % adds up to 0.6
>> A(sum(A,2)==1,:)
在sum(A,2)
第二维(行)上对 A 求和的地方,将此总和与 进行比较1
。这给出了一个布尔数组,该数组用作索引来选择矩阵的行,然后给出:
ans =
0.1000 0.3000 0.3000 0.3000
0.4000 0.2000 0.1000 0.3000