极小值计算.doc

上传人:hs****ma 文档编号:548380518 上传时间:2022-11-18 格式:DOC 页数:4 大小:36KB
返回 下载 相关 举报
极小值计算.doc_第1页
第1页 / 共4页
极小值计算.doc_第2页
第2页 / 共4页
极小值计算.doc_第3页
第3页 / 共4页
极小值计算.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《极小值计算.doc》由会员分享,可在线阅读,更多相关《极小值计算.doc(4页珍藏版)》请在金锄头文库上搜索。

1、%首先生成灰度直方图向量(此处假设输入图像为I)p=imhist(I);%然后用find函数找出其中所有非0点的位置non_zeros_index=find(p(:)=0);%最后用min和max函数找到途中最小灰度值和最大灰度值mingray=min(non_zeros_index);maxgray=max(non_zeros_index);Matlab中,求数组的极大值与极小值我有一组数据如何用matlab找出所有的极大值点和极小值点?解决办法:假定data是你的数据,极大值的位置:find(diff(sign(diff(data)=-2)+1解释:假定数组中的极大值点的index为Pa,

2、diff(data)在index=Pa-1应该是正值,sign(Pa-1)=1index=Pa应该是负值,sing(Pa)=-1因此,diff(sign(diff(data)在index=Pa-1处为-2故find(diff(sign(diff(data)=-2)+1就是Pa注意:上述只适用于与极大值点Pa邻近的点Pa-1,Pa+1的值均小于Pa的情况。但是,按照极大值的定义,点Pa-1,Pa+1的值可以等于Pa的值。因此,上述方法是求取极大值的充分而非必要条件。一个简单的避免相邻多个数同时为极大(小)值的解决办法是对每个数加上一个很小的随机扰动,随机扰动可以取为A*randn;其中A的求法如

3、下:temp1=abs(diff(data);temp2=find(temp1=0);min(temp1(temp2)/100极小值的位置find(diff(sign(diff(data)=2)+1解释:假定数组中的极小值点的index为Pa,diff(data)在index=Pa-1应该是负值,sign(Pa-1)=-1index=Pa应该是正值,sing(Pa)=1因此,diff(sign(diff(data)在index=Pa-1处为2故find(diff(sign(diff(data)=2)+1就是Pa同样,上述方法是求取极小值的充分而非必要条件。data(find(diff(sign

4、(diff(data)=-2)+1)和data(find(diff(sign(diff(data)=2)+1)返回的是极大值和极小值#matlab评论(3)转载(1)求极值的具体语句:极值:data是你的数据,find(diff(sign(diff(data)=-2)+1找到极大值的位置find(diff(sign(diff(data)=2)+1找到极小值的位置data(find(diff(sign(diff(data)=-2)+1)和data(find(diff(sign(diff(data)=2)+1)返回的是极大值和极小值要想diff(sign(diff)出现-2,只有是sign的结果为

5、-1,1排列的时候,-1代表,前一次的diff运算前面的数值比后面大,1代表,后一次diff运算后面的数值比前面大,因而,x-a,x,x+b,a,b均为正数,则x为极小值。同理判断极大值。find查找到极值的索引后还要+1,是因为,差分运算(diff)后的数据的长度比原始数据少1,见help。%方法一x=0:0.01:20;y=2*sin(x/2)+cos(2*x)/2;% indmax=find(diff(sign(diff(y)0)+1;%极小值点ind=find(diff(sign(diff(y)=0)+1;%极值点plot(x,y,x(ind),y(ind),ro)%方法二x=0:0.

6、01:20;y=2*sin(x/2)+cos(2*x)/2;indmax=intersect(find(diff(y)0)+1,find(diff(y)0);%极大值点indmin=intersect(find(diff(y)0);%极小值点plot(x,y,x(indmax),y(indmax),ro,x(indmin),y(indmin),go)%方法三x=0:0.01:20;y=2*sin(x/2)+cos(2*x)/2;yf=y(2:end-1)-y(1:end-2); %前向差分yb=y(2:end-1)-y(3:end);%后向差分I=find(yf.*yb=0)+1;%寻找极值点(不考虑首尾两点)plot(x,y,b,x(I),y(I),r*);cl;img=imread(15.bmp);%imshow(img);m n=size(img);max=0;min=256;avg=0;for i=1:1:m for j=1:1:n if img(i,j)max max=img(i,j); end avg=avg+double(img(i,j); endend%avg=mean(mean(img);avg=uint8(avg/(m*n);maxminavg

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号