matlab中的中间值,matlab - 在MATLAB中获取中间值的索引 - 堆栈内存溢出

这个想法是对向量​​进行排序,并取中间值。 对于偶数长度的向量,我们计算中间两个值的平均值。

例:

%# some random vector

%#x = rand(99,1); %# odd-length

x = rand(100,1); %# even-length

%# index/indices for median value

num = numel(x);

[~,ord] = sort(x);

idx = ord(floor(num/2)+(rem(num,2)==0):floor(num/2)+1);

%# median value

med = mean( x(idx) );

%# compare against MATLAB's function

median(x)

编辑

这是一个示例函数实现:

function [med idx] = mymedian(x)

%# MYMEDIAN

%#

%# Input: x vector

%# Output: med median value

%# Output: idx corresponding index

%#

%# Note: If vector has even length, idx contains two indices

%# (their average is the median value)

%#

%# Example:

%# x = rand(100,1);

%# [med idx] = mymedian(x)

%# median(x)

%#

%# Example:

%# x = rand(99,1);

%# [med idx] = mymedian(x)

%# median(x)

%#

%# See also: median

%#

assert(isvector(x));

[~,ord] = sort(x);

num = numel(x);

if rem(num,2)==0

%# even

idx = ord(floor(num/2):floor(num/2)+1);

med = mean( x(idx) );

else

%# odd

idx = ord(floor(num/2)+1);

med = x(idx);

end

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值