How can I calculate the "Median" of floating point numbers

조회 수: 8 (최근 30일)
Jim McIntyre
Jim McIntyre 2023년 6월 9일
댓글: James Tursa 2023년 6월 9일
I have three two-dimensional arrays containing floating point numbers. I would like to construct a two-dimensional array that contains the "median" or middle value (not the mean) of the three arrays.
For example, if one element of the arrays contained 4.81, 3.54, and 3.56, I'd like to return 3.56, which is the middle value.
How can I do that?

채택된 답변

James Tursa
James Tursa 2023년 6월 9일
E.g.,
x = randi(10,2,3)
x = 2×3
8 4 8 2 8 4
y = randi(10,2,3)
y = 2×3
10 5 5 6 5 8
z = randi(10,2,3)
z = 2×3
9 8 3 4 9 4
xyz = cat(3,x,y,z)
xyz =
xyz(:,:,1) = 8 4 8 2 8 4 xyz(:,:,2) = 10 5 5 6 5 8 xyz(:,:,3) = 9 8 3 4 9 4
result = median(xyz,3)
result = 2×3
9 5 5 4 8 4
  댓글 수: 6
Jim McIntyre
Jim McIntyre 2023년 6월 9일
Thank you. That answer works.
My original problem was in trying to calculate the median of the arrays without concatenating them. My original code was in the form:
myMedian = median(x(:),y(:),z(:))
James Tursa
James Tursa 2023년 6월 9일
The concatenation is going to take extra time and memory for the temporary data copies, which will slow performance. Could be avoided with a mex routine, but I wouldn't bother with that unless your variables are huge and the performance hit is significant.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

제품


릴리스

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by