[已答复] 按规则找出最大值,有代码求指导

[复制链接]
啊你哈噻呦 发表于 2022-1-14 19:17:55
本帖最后由 啊你哈噻呦 于 2022-1-14 19:34 编辑

想从一组数中,按一下规则找出最大值。
比如A=[1,9,10,7,8,3,5]
A的全局最大值是A[3]=10,
接下来找的话,从第4个位置开始找,即找A[4:7]中的最大值;
以此类推

这是目前写的代码,无法实现结果,求指导!
A = 1 + (4-1) * rand(1,18);
B = zeros(1,18);
index = zeros(1,18);
for i=1:15
    [m,p]=max(A(i:18));
    B(i)=m;
    index(i)=p;
    if i <15
        i=p+1;      
    end
end

3 条回复


1115487732 发表于 2022-1-14 20:12:38
本帖最后由 1115487732 于 2022-1-14 20:15 编辑
  1. clear,clc
  2. A = 1 + (4-1) * rand(1,18);
  3. indices = 1;
  4. for i=1:length(A)
  5.     [m,p]=max(A(indices:18));
  6.     Value(i) = m;
  7.     if i==1
  8.         position(i) = p;
  9.     else
  10.         position(i) = p+indices-1;
  11.     end
  12.     indices=position(i)+1;
  13.     if max(position)==length(A)
  14.         break
  15.     end
  16. end
复制代码

啊你哈噻呦 发表于 2022-1-14 20:26:22

谢谢您!我小白,语法都是现学现用,把你的代码我逐句理了一下,发现自己的问题,切片后的位置是更新了从1开始。还是很谢谢你

caicaibi 发表于 昨天 15:38
这样效率高一些
  1. clear;clc
  2. A=[1,9,10,7,8,3,5];
  3. [DATA len]=max(A);
  4. while len(end)~=length(A)
  5.     [DATA(end+1) temp]=max(A(len(end)+1:end));
  6.     len(end+1)=len(end)+temp;
  7. end
  8. DATA=[DATA;len]
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表