2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > matlab中的中间值 matlab - 在MATLAB中获取中间值的索引 - 堆栈内存溢出

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

时间:2022-03-01 23:24:12

相关推荐

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。