【发布时间】:2014-02-25 18:20:09
【问题描述】:
我在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 表示列索引,并将相应的评分存储在该数组索引中。 (这会起作用,因为我事先知道我的宇宙中的用户和项目的数量,所以 id 不能大于那个)。
任何帮助将不胜感激。
到目前为止,我已经尝试了如下的 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 还很陌生,如果能提供任何有关此问题的帮助,我将不胜感激。
【问题讨论】:
-
每行的 (item,rating) 对的数量是固定的吗?
-
不,它是可变的,但每个元组由逗号','分隔
标签: matlab file-io matrix textscan