Matlab 统一赋值问题

来源:互联网 发布:golang array slice 编辑:程序博客网 时间:2024/05/21 03:54

prop_user(find(prop_user(:,i)==0),i)=sum(prop_user(:,i))/length(find(prop_user(:,i)~=0));

向上面这种赋值方式是错误的,因为按照MATLAB的内部优化算法,在统一赋值的时候矩阵的值是动态变化的,这样回事结果出现错误(主要是length(find(prop_user(:,i)~=0)))这一步,MATLAB在赋值之前已经将不等于0的元素提前标记了。

正确的方法:

b=sum(prop_user(:,i))/length(find(prop_user(:,i)~=0));
prop_user(find(prop_user(:,i)==0),i)=b;

0 0
原创粉丝点击