我有一個矩陣X e.g = [a b; c d; e f]
。使用索引壓扁MATLAB中的矩陣
我需要創建另一個矩陣,列出矩陣的索引位置和值。
例如輸出是E = [ 1 1 a ; 1 2 b ; 2 1 c ; 2 2 d ; 3 1 e ; 3 2 f ]
我一直在嘗試使用雙循環,但即使它確實工作,這聽起來像一個壞主意。
那麼任何人都可以有更好的主意來執行上述任務嗎?
我有一個矩陣X e.g = [a b; c d; e f]
。使用索引壓扁MATLAB中的矩陣
我需要創建另一個矩陣,列出矩陣的索引位置和值。
例如輸出是E = [ 1 1 a ; 1 2 b ; 2 1 c ; 2 2 d ; 3 1 e ; 3 2 f ]
我一直在嘗試使用雙循環,但即使它確實工作,這聽起來像一個壞主意。
那麼任何人都可以有更好的主意來執行上述任務嗎?
這是我能想到的(假設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)]
不過,我有一種感覺,有可能是一個答案是更優雅的最愚蠢的事情。
這很不錯。你可以用'x''替換'transpose(x)'來提高可讀性,並且把最後一行改寫爲'[j(:) i(:) reshape(x',[],1)]' – Pursuit 2012-02-01 19:57:23
@追求,感謝您的建議。我喜歡轉錄而不是標籤,因爲當讀一個標籤時他很容易注意到它。你說的另一件事是100%正確 - 我會更新。 – 2012-02-01 20:12:25
沒有錯@安德烈的回答,而是因爲我喜歡找理由使用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)]
是A,B,C,d,e和f所有標量?或者他們可以是矩陣? – Pursuit 2012-02-01 19:43:13
他們都是標量 – atlantis 2012-02-03 05:03:26