2012-02-23 90 views
0

我想寫一個循環,將每個數字在userIdx,然後進入結構magStruct和每次通過循環採取該結構內的索引矩陣,並將所有數字連接成一個矩陣。然後我想取出所有重複的數字副本,這樣我就可以從我指定的數字索引中的所有數字中唯一編號的矩陣留給我指定的函數。在MATLAB中編寫循環結構?

magStruct是一個結構和索引是雙打的矩陣。

我已經寫了環路和數字的串聯,但環給我一個錯誤,甚至那麼我認爲一個矩陣中的每個元素將是矩陣本身,而不僅僅是數字。另外,刪除矩陣中重複數字的函數是什麼?謝謝。

function coverage = getCoverage(userIdx, magStruct) 
% getCoverage returns the list of magazines for users in input vector 
% Input Arguments: 
% userIdx = an row vector with user indexes 
% magStruct = the magazineData structure 
% Output Arguments: 
% coverage = a list of the unique magazines that users in userIdx subscribe to 

a = 0; 
for k = userIdx 
    mags(a) = magStruct(k).indexes; 
    a = a + 1; 
end 

回答

1

magStruct中索引矩陣的大小是多少?

如果它們具有相同的列數數字矩陣,你可以用

mag = cat(1,magStruct(userIdx).indexes); 

將它們連接爲相同的行數只是改變12

要刪除重複使用UNIQUE功能:

magunq = unique(mag); 

如果索引矩陣具有不同的尺寸,這是一個更復雜一點。你可以先把它們轉換成列向量,然後以同樣的方式串連:

temp = arrayfun(@(x) x.a(:), magStuct, 'uniformoutput',0); 
mag = cat(1,temp{userIdx})