這是MatLab的問題... 我有兩個矩陣,一個是(5×1雙):掩蔽雙重的過一個字符串
1
2
3
1
3
而第二矩陣是一個(5× 3字符串),用空格其中沒有字符出現:
a
bc
def
g
hij
我試圖得到一個輸出,使得(5×1串)被創建,並從基質2,其中n的每一行輸出的第n個值是矩陣1中的值。我不確定如何使用能夠處理更大的矩陣的面罩來做到這一點。我的目標矩陣將具有以下內容:
a
c
f
g
j
非常感謝您的幫助!
這是MatLab的問題... 我有兩個矩陣,一個是(5×1雙):掩蔽雙重的過一個字符串
1
2
3
1
3
而第二矩陣是一個(5× 3字符串),用空格其中沒有字符出現:
a
bc
def
g
hij
我試圖得到一個輸出,使得(5×1串)被創建,並從基質2,其中n的每一行輸出的第n個值是矩陣1中的值。我不確定如何使用能夠處理更大的矩陣的面罩來做到這一點。我的目標矩陣將具有以下內容:
a
c
f
g
j
非常感謝您的幫助!
有很多方法可以完成此任務。我會給你兩個。
使用sub2ind
以生成一組對應於要在矩陣訪問的行和列的位置的線性指標。你會注意到列的位置是變化的,但是你想要訪問每一行的行位置總是增加1。因此,給你的字符串矩陣A
,和你的專欄要訪問存儲在ind
,只是這樣做:
A = ['a '; 'bc '; 'def'; 'g ';'hij'];
ind = [1 2 3 1 3];
out = A(sub2ind(size(A), (1:numel(ind)).', ind(:)))
out =
a
c
f
g
j
logical
和訪問或者,您可以通過sparse
創建一個稀疏矩陣,其中非零項是行,從1到最多與ind
中的元素相同,並且各列與您給我們的內容不同。
S = sparse((1:numel(ind)).',ind(:),true,size(A,1),size(A,2));
A = A.'; out = A(S.');
請注意您試圖以行爲主要方式訪問每個元素,但MATLAB會以列主要格式執行此操作。因此,我們需要轉置我們的數據矩陣,並且也需要我們的稀疏矩陣並轉置。最終結果應該給你方法#1相同的順序。
矩陣在哪裏?你使用什麼平臺/語言? – 2015-02-11 19:46:46
MatLab,對不起忘了補充一點! – 2015-02-11 20:44:58