我在matlab中有一个格式如下的文件:
user_id_a: (item_1,rating),(item_2,rating),...(item_n,rating)
user_id_b: (item_25,rating),(item_50,rating),...(item_x,rating)
....
....
所以每一行都有用冒号分隔的值,其中冒号左边的值是代表 user_id 的数字,右边的值是 item_ids (也是数字)和评级(数字不是浮点数)的元组。
我想将此数据读入 matlab 单元数组,或者更好地最终将其转换为稀疏矩阵,其中 user_id 表示行索引,item_id 表示列索引并将相应的评级存储在该数组索引中。(这会起作用,因为我事先知道我的宇宙中的用户和项目的数量,所以 ids 不能大于那个)。
任何帮助,将不胜感激。
到目前为止,我已经尝试了 textscan 功能如下:
c = textscan(f,'%d %s','delimiter',':') %this creates two cells one with all the user_ids
%and another with all the remaining string values.
现在,如果我尝试做类似的事情str2mat(c{2})
,它可以工作,但它也会将 '(' 和 ')' 字符存储在矩阵中。我想以我上面描述的方式存储一个稀疏矩阵。
我对 matlab 还很陌生,希望对此事有任何帮助。