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?
使用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)