本周文件交换选择

我们最好的用户反馈

求和和乘法nan:用例??

内容

nancumsum ()nancumprod ()

本周,我没有选择一个单独的文件进行高亮显示,而是(布雷特)我想提出几个问题。

很多年前,在2007年,我刚开始为MathWorks工作不久,我需要计算一个向量的累积和,忽略nan.说实话,我甚至不记得我为什么需要这样做;也许是为了帮助一位顾客。

搜索MATLAB文档,我很快就找到了nansum统计和机器学习工具箱.(当然,这是在“机器学习”被包含在该工具的名称之前!)但是这个函数没有满足我的需求。

我毫不气馁,写了自己版本的nancumsum并立即在文件交换平台上分享了它。在收到一系列关于这一贡献的电子邮件后,我修改了该功能,以提供额外的操作模式。目前的模式有四种:

  1. 将nan替换为0;(这是默认行为)。
  2. 保留nan作为职位持有人;(即跳过没有复位的nan)。
  3. 重置nan上的和,将nan替换为零。
  4. 在nan上重置和,保持nan作为位置占位符。

因为很容易做,我也分享了nancumprod,它以类似的方式累积增殖。

在我分享这些文件的十年里,它们被下载了数千次。(nancumsum显然遥遥领先nancumprod下载量。)而且评价还不错。(MATLABber非凡的Urs Schwarz称它是“对这个社区至关重要的作品”,并建议它“应该在[MATLAB]库存中很长一段时间”。谢谢你,乌尔斯!(;))函数——尤其是nancumsum-直到今天仍然很受欢迎。

我的问题

所以现在我在想为什么它们已经流行这么久了。只是如何人们是否在使用nancumsum而且nancumprod?

更重要的是:那些仍在使用这些函数的人是否意识到cumsum函数现在有一个“nanflag”来指定nan被忽略?(事实上,' omitnan '在R2016b中起作用cumsum孜然芹,cummax;,截至R2017a刺激而且cumprod.)

供您参考

A = [3 5 NaN 9 0 NaN] A = 3 5 NaN 9 0 NaN
B = nancumsum(A,2,1)使用模式1沿第二个(行)维度进行运算B = 3 8 8 17 17 17
C = cumsum(A,“omitnan”) c = 3 8 8 17 17 17

的默认模式nancumsum被忽略nan的新支持所避免金宝appcumsum

还有其他的模式nancumsum, MATL金宝appAB函数不支持:

B2 = nancumsum(A,2,2) B2 = 3 8 NaN 17 17 NaN B3 = nancumsum(A,2,3) B3 = 3 8 0 9 9 0 B4 = nancumsum(A,2,4) B4 = 3 8 NaN 9 9 NaN

有人对这个话题有什么想法吗?我应该把这些文件留在Exchange上,还是应该删除它们以促进完全支持的MATLAB函数的使用?金宝app替代模式是否证明文件是有效的?

你的想法和评论非常欢迎就话题发表意见!

发布与MATLAB®R2017a

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。