求和和乘法nan:用例??
内容
nancumsum (),nancumprod ()
本周,我没有选择一个单独的文件进行高亮显示,而是(布雷特)我想提出几个问题。
很多年前,在2007年,我刚开始为MathWorks工作不久,我需要计算一个向量的累积和,忽略nan.说实话,我甚至不记得我为什么需要这样做;也许是为了帮助一位顾客。
搜索MATLAB文档,我很快就找到了nansum在统计和机器学习工具箱.(当然,这是在“机器学习”被包含在该工具的名称之前!)但是这个函数没有满足我的需求。
我毫不气馁,写了自己版本的nancumsum并立即在文件交换平台上分享了它。在收到一系列关于这一贡献的电子邮件后,我修改了该功能,以提供额外的操作模式。目前的模式有四种:
- 将nan替换为0;(这是默认行为)。
- 保留nan作为职位持有人;(即跳过没有复位的nan)。
- 重置nan上的和,将nan替换为零。
- 在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帐户或创建一个新帐户。