查看: 972|回复: 12|关注: 0

[已解决] MATLAB如何求一列数据里1-5,2-6,3-7...的median

[复制链接]

新手

15 麦片

财富积分


050


5

主题

19

帖子

0

最佳答案
本帖最后由 IAe 于 2020-1-20 21:57 编辑

请教各位大佬,假设我有一列数据1,2,3,4,5,6,7,...,200
我想求
1,2,3,4,5
2,3,4,5,6
3,4,5,6,7
4,5,6,7,8

...
196,197,198,199,200

上面一个矩阵每一行的median,最后得到下面这样一个变量:
3
4
5
6
...
198

MATLAB怎么实现?
注:上面的数值1-200是简单假设,实际上可能是各种“乱七八糟”的数值。


MATLAB 基础讨论
版块优秀回答者

入门

195 麦片

财富积分


50500


1

主题

93

帖子

25

最佳答案
  • 关注者: 5
发表于 2020-1-20 22:01:41 | 显示全部楼层
你好,可以使用 median 函数
  1. M = median(A,dim)
复制代码

M = median(A,1); 求的是每一列的中位数;
M = median(A,2); 求的是每一行的中位数。

新手

15 麦片

财富积分


050


5

主题

19

帖子

0

最佳答案
 楼主| 发表于 2020-1-20 22:04:21 | 显示全部楼层
gopher 发表于 2020-1-20 22:01
你好,可以使用 median 函数

M = median(A,1); 求的是每一列的中位数;

怎么把1,2,3,4,...,200这样一个一行矩阵转化为下面这个矩阵:
1,2,3,4,5
2,3,4,5,6
3,4,5,6,7
4,5,6,7,8

...
196,197,198,199,200

论坛优秀回答者

0

主题

674

帖子

123

最佳答案
  • 关注者: 26
发表于 2020-1-20 22:04:29 | 显示全部楼层
本帖最后由 20141303 于 2020-1-20 22:08 编辑

仅供参考
a=1:200;
b=reshape(a,5,40)';
c=median(b,2);

新手

15 麦片

财富积分


050


5

主题

19

帖子

0

最佳答案
 楼主| 发表于 2020-1-20 22:09:32 | 显示全部楼层
20141303 发表于 2020-1-20 22:04
仅供参考
a=1:200;
b=reshape(a,5,40)';

原先的矩阵元素是200个
转化后的矩阵是5列196行,980个,reshape不能用,有其他转化式吗?

MATLAB 基础讨论
版块优秀回答者

入门

195 麦片

财富积分


50500


1

主题

93

帖子

25

最佳答案
  • 关注者: 5
发表于 2020-1-20 22:10:31 | 显示全部楼层
本帖最后由 gopher 于 2020-1-20 22:14 编辑
IAe 发表于 2020-1-20 22:04
怎么把1,2,3,4,...,200这样一个一行矩阵转化为下面这个矩阵:
1,2,3,4,5
2,3,4,5,6
  1. a = 1:200; % 原向量
  2. N = 5; % 5 列

  3. [X,Y] = meshgrid(0:N-1,a(1:end-N+1));
  4. A = X+Y;
复制代码

论坛优秀回答者

0

主题

674

帖子

123

最佳答案
  • 关注者: 26
发表于 2020-1-20 22:11:25 | 显示全部楼层
仅供参考
a=0:4;
for i=1:196
    b(i,1:5)=a+i;
end
c=median(b,2);

论坛优秀回答者

0

主题

674

帖子

123

最佳答案
  • 关注者: 26
发表于 2020-1-20 22:15:05 | 显示全部楼层
gopher的代码更好,学到了,谢谢

新手

15 麦片

财富积分


050


5

主题

19

帖子

0

最佳答案
 楼主| 发表于 2020-1-20 22:21:17 | 显示全部楼层

追问下:如果上面的数字不是1,2,3,4,5,...,200,是23,65,3123,231,...,1/5这种没有规律的数字(也是200个),这怎么转化?

新手

15 麦片

财富积分


050


5

主题

19

帖子

0

最佳答案
 楼主| 发表于 2020-1-20 22:22:18 | 显示全部楼层
20141303 发表于 2020-1-20 22:11
仅供参考
a=0:4;
for i=1:196

追问下:如果上面的数字不是1,2,3,4,5,...,200,是23,65,3123,231,...,1/5这种没有规律的数字(也是200个),这怎么转化?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表