如何在 MATLAB 中将列的数据标准化为平均值?
我正在尝试采用一个矩阵,并将每个单元格中的值围绕该列的平均值进行标准化。归一化是指从该列的平均值中减去每个单元格中的值,即从 Column1 中的值减去 Column1 的平均值...从 ColumnN 中的值减去 ColumnN 的平均值。我正在寻找 Matlab 中的脚本。谢谢!
I am trying to take a matrix and normalize the values in each cell around the average for that column. By normalize I mean subtract the value in each cell from the mean value in that column i.e. subtract the mean for Column1 from the values in Column1...subtract mean for ColumnN from the values in ColumnN. I am looking for script in Matlab. Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用函数
mean
来获取每列的平均值,然后使用函数bsxfun
从每列中减去该值:此外,从版本 R2016b 开始,您可以利用 MATLAB 执行 将操作数隐式扩展到算术运算的正确大小。这意味着您可以简单地执行以下操作:
You could use the function
mean
to get the mean of each column, then the functionbsxfun
to subtract that from each column:Additionally, starting in version R2016b, you can take advantage of the fact that MATLAB will perform implicit expansion of operands to the correct size for the arithmetic operation. This means you can simply do this:
对于初学者来说,请尝试 mean 函数。向其传递一个矩阵将导致所有列被平均并返回一个行向量。
接下来,您需要减去平均值。为此,矩阵必须具有相同的大小,因此对平均行向量使用repmat。
或单行:
Try the mean function for starters. Passing a matrix to it will result in all the columns being averaged and returns a row vector.
Next, you need to subtract off the mean. To do that, the matrices must be the same size, so use repmat on your mean row vector.
or the one-liner:
正如已经指出的,您将需要
mean
函数,在没有任何附加参数的情况下调用该函数时,会给出输入中每列的平均值。然后会出现一个轻微的复杂情况,因为你不能简单地减去平均值——它的维度与原始矩阵不同。因此,请尝试以下操作:
repmat
复制均值以匹配数据维度。As has been pointed out, you'll want the
mean
function, which when called without any additional arguments gives the mean of each column in the input. A slight complication then comes up because you can't simply subtract the mean -- its dimensions are different from the original matrix.So try this:
repmat
replicates the mean to match the data dimensions.