matlab中如何求N行一列,固定区间段的最大值?

a=[1;2;4;5;89;5;14;85;62;18;...............................;2;4;8;68;9;4;15;32;54];
假设这是一个2000行1列的矩阵,我需要获得下标1到20的最大值(并且将剩余19个数全部变为这个最大值),21-40的最大值(同上),41-60的最大值,每个区间段均为20,依次求出所有。

b = reshape(a,20,100);
bmax = max(b);
c = repmat(bmax,20,1);
final = reshape(c,2000,1);
final就是你想要的矩阵啦!
其实也可以用for循环来处理,不过速度会比较慢,尤其对大数据量。
比较推荐这个方法
希望可以帮到你 :D
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-22
我这里随机定义一个A,你等会直接用你的a就可以了
A=rand(2000,1);
for i=1:100
k=A(20*(i-1)+1:20*i);
maxv=max(k);
A(20*(i-1)+1:20*i)=maxv
end
disp(A);
第2个回答  2013-05-22
a00=round(100*rand(1,2000));
for i=1:20:2000
am=max(a00(i:i+19));
a00(i:i+19)=am;
end