MATLAB重塑矩阵将索引转换为行索引

8ea*_*ast 1 matlab matrix reshape

是否有可能重塑这样的矩阵

x1 = 
    1   5
    3   4
    4   3
    7   1
Run Code Online (Sandbox Code Playgroud)

x2 =
    5
    NaN
    4
    3
    NaN
    NaN
    1
Run Code Online (Sandbox Code Playgroud)

反之亦然,其中第一列x1是对应于行#in的索引x2

Ole*_*leg 5

使用NaN创建一个数组并用值填充它:

x2          = NaN(max(x1(:,1)),1);
x2(x1(:,1)) = x1(:,2);
Run Code Online (Sandbox Code Playgroud)

现在,如果零填充是可接受的,那么您可以直接使用第二行而无需先创建out.

或者,对于您的具体示例(无重叠索引),可以实现相同的结果:

accumarray(x1(:,1),x1(:,2),[],[],NaN)
Run Code Online (Sandbox Code Playgroud)

走另一条路

idx = ~isnan(x2);
x1  = [find(idx) x2(idx)];
Run Code Online (Sandbox Code Playgroud)