求高人解释两个关于求极值的程序
这是我在某个地方看到程序1.----------------------------------hyperelastic 的方法-------------------------------------------------------
N = 100;
aa=randperm(N);
index = find(((aa(2:N-1)>aa(1:N-2))+(aa(2:N-1)>aa(3:N)))==2)+1;
bb = aa(index);
2.-------------bainhome的方法-----------------------------------------------------------------------------
a=rand(1,100); find(diff(sign(diff(a)))>0)+1
第一个程序中的第三行find()求解释一下括号内的,以及第2个程序是什么意思?为什么这两个最后都要+1
谢谢 回复 1 # shuidixn 的帖子
1.找出那些点是大於前面及后面的点
2.找出那些点其前后点之差有变号
+1使其对应位置正确
高手们喜欢使用简洁语法, 对新手较不易瞭解
建议取数据少点(N=10), 逐步执行并看结果就容易明白了N = 10; aa=randperm(N), plot(aa)
ind1=aa(2:N-1)>aa(1:N-2)
ind2=aa(2:N-1)>aa(3:N)
ind3=(aa(2:N-1)>aa(1:N-2))+(aa(2:N-1)>aa(3:N))
index = find(ind3==2)+1
bb = aa(index); 回复 2 # ChaChing 的帖子
多谢前辈指点
页:
[1]