简单测试一下matlab对于行列操作的测试速度
base_logical_rating 是 671行 163949列的矩阵 行列的差距非常大,,完成下面代码
tic
for id=1:671
u_logical = base_logical_rating(id,:);
for n = id+1 : 671
v_logical = base_logical_rating(n,:);
%得到共同打分的item的逻辑
co_logical = u_logical & v_logical;
fm = u_logical | v_logical;
Y(id,n) = sum(co_logical)/(sum(fm)+1e-10);
end
id
end
toc
一共花费284秒:
如果进行转置矩阵,转置一下
base_logical_rating = base_logical_rating';
tic
for id=1:671
u_logical = base_logical_rating(:,id);
for n = id+1 : 671
v_logical = base_logical_rating(:,n);
%得到共同打分的item的逻辑
co_logical = u_logical & v_logical;
fm = u_logical | v_logical;
Y(id,n) = sum(co_logical)/(sum(fm)+1e-10);
end
id
end
toc
完成代码运算大约需要101秒。
matlab还是尽量进行矩阵的列操作速度比较快。