【问题标题】:Matlab - computing statistics (max, min, mean, median, std ...) at onceMatlab - 一次计算统计数据(最大值、最小值、平均值、中值、标准...)
【发布时间】:2014-11-27 08:50:25
【问题描述】:

我相信有一个简单的答案,但我还没有找到。我想以其他方式计算数组的统计信息(最大值、最小值、平均值、中值、标准):

max = max(array)
min = min(array)
mean = mean(array)
median = median(array)
std = std(array

因为(我相信)它每次都会通过数组至少一次。我希望有一些类似的功能

[max, min, mean, median, std,...] = stat(array)

类似于R函数

summary(Array) #R code

或者到stata命令

des //stata

matlab应该用什么函数?

【问题讨论】:

  • 如果你有曲线拟合工具箱,你可以使用datastats编辑:原来它自己在内部执行了max、min等函数。
  • 仍然,至少它在一个函数中,并且将来可能会更改为立即运行(因此对于代码样式,如果我找不到如何查找统计信息的方法,我将使用它一次)
  • 或者您可以编写自己的函数,在后台依次调用 minmax 等。这样你只需要调用一个函数。
  • 好吧,我将不得不使用循环,这可能比最大或最小内部循环慢。我必须调用 min 和 max (所以它会循环两次),但是 min 和 max 可以在一个循环中计算出来)。
  • @Pter 速度真的那么关键,串行调用这 5 个基本函数对您来说是个问题吗?或者您是否掉入了试图优化不需要优化的东西的陷阱?我想说只需将这五个函数包装在您自己的 stat 函数中并一一调用它们。它们非常简单,可能会足够快......

标签: matlab statistics


【解决方案1】:

这是一个功能:

function [maxout, minout, meanout, medianout, stdout] = summary(array)

maxout    = max(array);
minout    = min(array);
meanout   = mean(array);
medianout = median(array);
stdout    = std(array);

只需复制它,将其保存到路径上名为summary.m 的文件中,然后就可以开始了。

【讨论】:

  • 我认为 OP 要求的是一个函数,而不是只在内部循环一次向量......
  • 感谢您的回答 :) 但是正如 Dan 所说,我要求计算所有这些的函数,因此它不会出现不必要的循环 - 例如 min 和 max 每个循环遍历数据,但如果我有一个函数 minmax 可以遍历数据并记住 min 和 max,它可以检查数组元素的最大值和最小值。
猜你喜欢
  • 1970-01-01
  • 2016-11-04
  • 2016-09-15
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
相关资源
最近更新 更多