在矩阵中为匹配ID重复一个值(MATLAB)

在矩阵中为匹配ID重复一个值(MATLAB),matlab,matrix,Matlab,Matrix,我需要你的帮助来解决以下问题。第1列按整数显示分组。Col2中的任何非nan值都应插入矩阵中以匹配groupnumber(Col1) 请推荐矢量化方法。数据量巨大,已经在for循环中运行。在一个组内(在mat中)永远不会有多个非nan值(col2)。谢谢 使用解决方案将实现您的目标: values = accumarray(mat(:,1),mat(:,2),[],@min); mat(:,2) = values(mat(:,1)); 我在这里使用这个函数是为了方便,因为如果有,它将返回非Na

我需要你的帮助来解决以下问题。第1列按整数显示分组。Col2中的任何非nan值都应插入矩阵中以匹配groupnumber(Col1)

请推荐矢量化方法。数据量巨大,已经在for循环中运行。在一个组内(在mat中)永远不会有多个非nan值(col2)。谢谢

使用解决方案将实现您的目标:

values = accumarray(mat(:,1),mat(:,2),[],@min);
mat(:,2) = values(mat(:,1));
我在这里使用这个函数是为了方便,因为如果有,它将返回非
NaN
值,或者如果只有这个值,它将返回
NaN
。它比使用函数检查任何非NaN值所涉及的逻辑更简单。实际上,您也可以使用该函数,因为它在本例中的行为方式相同。

使用的解决方案将实现您的目标:

values = accumarray(mat(:,1),mat(:,2),[],@min);
mat(:,2) = values(mat(:,1));

我在这里使用这个函数是为了方便,因为如果有,它将返回非
NaN
值,或者如果只有这个值,它将返回
NaN
。它比使用函数检查任何非NaN值所涉及的逻辑更简单。实际上,您也可以使用该函数,因为它在本例中的行为与此相同。

谢谢!我真的需要适应accumarray@Maddy:描述不完整:如果同一组中有多个非nan值(不同的值),是否要使用
min
替换同一组中的nan值?@Amro-感谢您指出这一点。我已编辑Q。一个组中不能有多个非nan值。在现实生活中,这些值是月末汇率。从上个月中旬到下个月(中1日)分组。我应该从Gnovice的代码中删除
@min
?我对accumarray的功能不是很了解。@Maddy:我对为什么使用
@min
@gnovice添加了一个额外的解释……我已经实现了它,结果又好又快!谢谢你!我真的需要适应accumarray@Maddy:描述不完整:如果同一组中有多个非nan值(不同的值),是否要使用
min
替换同一组中的nan值?@Amro-感谢您指出这一点。我已编辑Q。一个组中不能有多个非nan值。在现实生活中,这些值是月末汇率。从上个月中旬到下个月(中1日)分组。我应该从Gnovice的代码中删除
@min
?我对accumarray的功能不是很了解。@Maddy:我对为什么使用
@min
@gnovice添加了一个额外的解释……我已经实现了它,结果又好又快!