我有一个矩阵X e.g = [a b; c d; e f]
。
我需要创建另一个矩阵,列出矩阵的索引位置和值。
e.g。输出为E = [ 1 1 a ; 1 2 b ; 2 1 c ; 2 2 d ; 3 1 e ; 3 2 f ]
我一直在尝试使用双循环,但即使它确实有效,这听起来也不错。
那么任何人都可以更好地执行上述任务吗?
答案 0 :(得分:2)
这是我能想到的最蠢的事情(假设a,b,c,d,e,f
都是标量)
x = [1 2;3 4;5 6];
[i,j]=ind2sub(size(transpose(x)), 1:numel(x));
[j(:) i(:) reshape(transpose(x),[],1)]
然而,我觉得可能有一个更优雅的答案。
答案 1 :(得分:1)
@ Andrey的答案没有错,但因为我想找到使用kron
的理由:)
A = [1 2; 3 4; 5 6];
[nrows, ncols] = size(A);
M = [kron([1 : nrows]', ones(ncols, 1))...
kron(ones(nrows, 1), [1 : ncols]')...
reshape(A', [], 1)]