3
我有以下形式的數據在一個文本文件有效地加載數據在MATLAB
Userid Gameid Count
Jason 1 2
Jason 2 10
Jason 4 20
Mark 1 2
Mark 2 10
................
.................
總共有81個Gameids的,我有200萬左右的不同用戶。
我要的是讀取該文本文件並創建表單的稀疏矩陣
Column 1 2 3 4 5 6 .
Row1 Jason 2 10 20
Row2 Mark 2 10
現在我可以加載在MATLAB這個文本文件並讀取用戶一個接一個,閱讀他們的數量和初始化稀疏數組。我已經試過了,初始化一個用戶的行需要1秒。所以對於總共200萬用戶來說,這需要我很多時間。
什麼是最有效的方法來做到這一點?
這裏是我的代碼
data = sparse(10000000, num_games);
loc = 1;
for f=1:length(files)
file = files(f).name;
fid = fopen(file,'r');
s = textscan(fid,'%s%d%d');
count = (s(:,2));
count = count{1};
position = (s(:,3));
position = position{1};
A=s{:,1};
A=cellstr(A);
users = unique(A);
for aa = 1:length(Users)
a = strfind(A, char(Users(aa)));
ix=cellfun('isempty',a);
index = find(ix==0);
data(loc,position(index,:)) = count(index,:);
loc = loc + 1;
end
end
我不知道你希望你的稀疏矩陣看起來像。你想要它包含值*和*球員姓名字符串?或者,您是否想爲每個玩家創建一個稀疏矩陣? –