matlab 计算指北角,用MATLAB如何计算出矩形区域内的最大值?

在MATLAB图像处理工具箱(Image Processing Toolbox)的GUI函数中,有一些用来在图像或坐标轴上选择矩形或椭圆区域的函数,使用示例如下:

0cc1be396435369d346fab0eac07f9a6.png

第一行代码:显示matlab内置的一个图像

第一行代码:在图像的以左上角为原点画一个矩形区域,返回矩形区域axes对象的句柄值h,MATLAB的help解释为:

h = imrect(hparent, position)createsa draggable rectangle on the object specified by hparent. position isa four-element vector that specifies the initial size and locationof the rectangle.position has the form [xminymin width height].

第三行代码:得到句柄h的API接口,用于后面的程序调用。

第四行代码:添加一个回调函数,当矩形框的位置更新时,这个回调函数被调用对此进行反应,此处反应的方式为在图像的标题处显示矩形框的位置和大小信息。mat2str用于将句柄函数p的矩形框位置数据转化为字符串。

第五行代码:定义一个矩形框区域限制函数,这个函数使得矩形框被限制在图像内部,不能被挪到图像外部。

第六行代码:调用setPositionConstraintFcn函数完场第五行代码的功能。

---------------

matlab中的的最大值和最小值

MATLAB提供的求数据序列的最大值和最小值的函数分别为max和min,两个函数的调用格式和操作过程类似。

1.求向量的最大值和最小值

求一个向量X的最大值的函数有两种调用格式,分别是:

(1) y=max(X):返回向量X的最大值存入y,如果X中包含复数元素,则按模取最大值。

(2) [y,I]=max(X):返回向量X的最大值存入y,最大值的序号存入I,如果X中包含复数元素,则按模取最大值。

求向量X的最小值的函数是min(X),用法和max(X)完全相同。

例3-1  求向量x的最大值。

命令如下:

x=[-43,72,9,16,23,47];

y=max(x)              %求向量x中的最大值

[y,l]=max(x)         %求向量x中的最大值及其该元素的位置

2.求矩阵的最大值和最小值

求矩阵A的最大值的函数有3种调用格式,分别是:

(1) max(A):返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。

(2) [Y,U]=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。

(3) max(A,[],dim):dim取1或2。dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。

求最小值的函数是min,其用法和max完全相同。

例3-2  分别求3×4矩阵x中各列和各行元素中的最大值,并求整个矩阵的最大值和最小值。

3.两个向量或矩阵对应元素的比较

函数max和min还能对两个同型的向量或矩阵进行比较,调用格式为:

(1) U=max(A,B):A,B是两个同型的向量或矩阵,结果U是与A,B同型的向量或矩阵,U的每个元素等于A,B对应元素的较大者。

(2) U=max(A,n):n是一个标量,结果U是与A同型的向量或矩阵,U的每个元素等于A对应元素和n中的较大者。

min函数的用法和max完全相同。

例3-3  求两个2×3矩阵x, y所有同一位置上的较大元素构成的新矩阵p。

---------------

matlab里截取图像中以某点为中心的矩形区域

例如以点(a,b)为中心,矩形左右两边离中心的距离为m,上下两边离中心的距离为n,截取这样一个矩形,该怎么做?

比如图片是bw

jiuqu=imcrop(bw,[a-m b-n m n]);%起点坐标 变成了(a-m,b-n)

---------------

matlab求解 下图中的 2个区域如何分别用一个矩形盖住,并返回矩形坐标点,2块区域的位置是不固定的,求解,算法思路。

a9ee2a754e3c8f92c06ad32e988b7600.png

Rect = [];

L = bwlabel(I);

for i = 1 : max(L(:))

[x,y] = find(L==i);

[x,y] = find(L==i);

Rect = [Rect;min(x) max(x) min(y) max(y)];

end

Rect是那两个方块的四个角的x,y坐标

---------------

如何用matlab求函数最小值最大值啊?用matlab计算下面三个函数的最优解及其t的取值:

f1=686.4./t.^2.*(exp(0.3*t)-1)+1.31./t.*(exp(0.3*t)-0.3*t-1)+137.4./t.*(exp(0.3*t)-1)

f3=480-120./t-800./t.*(exp(0.3*t)-1)-355.6./t.*(exp(0.3*t)-0.3*t-1);

f2=480-240./t-843.97./t.*(exp(0.3*t)-1)-356./t.*(exp(0.3*t)-0.3*t-1)-219.6./t.^2.*(exp(0.3*t)-1)-146.528./t.^2.*(exp(0.3*t)-1).*(exp(-0.3*t)-1);

t的范围是大于等于零。

---------------

举个例子

以第一个为例

syms t;

f1=686.4./t.^2.*(exp(0.3*t)-1)+1.31./t.*(exp(0.3*t)-0.3*t-1)+137.4./t.*(exp(0.3*t)-1);

df1=diff(f1,t)

tt=solve(df1,'t')

ezplot(f1)

minf=feval(@(t)eval(f1),tt)

hold on;

plot(tt,minf,'ro')

==========结果

df1 =

(131*((3*exp((3*t)/10))/10 - 3/10))/(100*t) + (2061*exp((3*t)/10))/(50*t) + (5148*exp((3*t)/10))/(25*t^2) - (687*(exp((3*t)/10) - 1))/(5*t^2) - (6864*(exp((3*t)/10) - 1))/(5*t^3) + (131*((3*t)/10 - exp((3*t)/10) + 1))/(100*t^2)

tt =

3.3907736905146573977514580257101

minf =

177.23480334269610970241980862625

---------------

高手分析

用MATLAB分析最小值和最大值的问题

相关函数介绍;fminimax函数;

功能:求解最大最小化问题;

语法:;x=fminimax(fun,x0);x=fminimax(fun,x0,A,b);x=fminimax(fun,x0,A,b,Ae;

x=fminimax(fun,x0,A,b,Ae;x=fminimax(fun,x0,A,b,Ae;x=fminimax(fun,x0,A,b,Ae;x=f

相关函数介绍

fminimax函数

功能:求解最大最小化问题。

语法:

x = fminimax(fun,x0)

x = fminimax(fun,x0,A,b)

x = fminimax(fun,x0,A,b,Aeq,beq)

x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub)

x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)

x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P

1,P2,...)

[x,fval] = fminimax(...)

[x,fval,maxfval] = fminimax(...)

[x,fval,maxfval,exitflag] = fminimax(...)

[x,fval,maxfval,exitflag,output] = fminimax(...)

[x,fval,maxfval,exitflag,output,lambda] = fminimax(...)

描述:

fminimax 使多目标函数中的最坏情况达到最小化。给定初值估

计,该值必须服从一定的约束条件。

x = fminimax(fun,x0)初值为x0,找到fun函数的最大最小化

解x。

x = fminimax(fun,x0,A,b)给定线性不等式A*x <= b,求解最

大最小化问题。

x = fminimax(fun,x,A,b,Aeq,beq) 给定线性等式,Aeq*x = b

eq,求解最大最小化问题。如果没有不等式存在,设置A=[]、b=[]。

x = fminimax(fun,x,A,b,Aeq,beq,lb,ub) 为设计变量定义一

系列下限lb和上限ub,使得总有lb <= x <= ub。

x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) 在nonlco

n参数中给定非线性不等式约束c(x)或等式约束ceq(x),fminimax

函数要求c(x) <= 0且ceq(x) = 0。若没有边界存在,设置lb=[]

和(或)ub=[]。

x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

用options给定的参数进行优化。

x = fminimax(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P

1,P2,...)将问题参数P1, P2等直接传递给函数fun和nonlcon。如

果不需要变量A, b, Aeq, beq, lb, ub, nonlcon和options将它们

设置为空矩阵。

[x,fval] = fminimax(...) 返回解x处的目标函数值。

[x,fval,maxfval] = fminimax(...)返回解x处的最大函数值。

10

[x,fval,maxfval,exitflag] = fminimax(...) 返回exitflag

参数,描述函数计算的退出条件。

[x,fval,maxfval,exitflag,output] = fminimax(...) 返回描

述优化信息的结构输出output参数。

[x,fval,maxfval,exitflag,output,lambda] = fminimax(...)

返回包含解x处拉格朗日乘子的lambda参数。

变量:

maxfval变量

解x处函数值的最大值,即,maxfval = max{fun(x)}。

注意:

1. 在options.MinAbsMax中设置F最坏绝对值最小化了的目

标数。该目标应该放到F的第一个元素中去。例如,考虑上面的问题,

需要找到x值,

使得下式的最大绝对值最小化:

通过调用fminimax函数来进行求解

x0 = [0.1; 0.1]; % 设置初值

options = optimset('MinAbsMax',5); % 最小化绝对

[x,fval] = fminimax(fun,x0,[],[],[],[],[],[],[],o

ptions);

经过7次迭代以后,得到问题的解

x =

4.9256

2.0796

fval =

37.2356 -37.2356 -6.8357 -7.0052 -0.9948

2.当提供了等式约束并且在二次子问题中发现并剔除了因等式,

则在过程标题中打印'dependent'字样(当输出选项设置为options.D

isplay='iter')。因等式只有在等式连续的情况下才被剔除。若系统

不连续,则子问题不可行并且在过程标题中打印'infeasible'字样。

算法:

fminimax函数使用序列二次规划法(SQP)进行计算。对一维搜索

法和Hessian矩阵的计算进行了修改。在一维搜索中,将精确目标函

数和文献[2]、[3]中的目标函数一起使用。当有一个目标函数不再发

生改善时,一维搜索终止。修改的Hessian矩阵借助于本问题的结构,

也被采用。详细内容可参见文献[5]、[6]。

局限性:

目标函数必须连续,否则fminimax函数有可能给出局部最优解。

参见:

optimset, fgoalattain, lsqnonlin

11

应用实例

定位问题

设某城市有某种物品的10个需求点,第i个需求点Pi的坐标为(ai,bi),道路网与坐标轴平行,彼此正交。现打算建一个该物品的供应中心,且由于受到城市某些条件的限制,该供应中心只能设在x界于[5,8],y界于[5,8]的范围内。问该中心应建在何处为好?

Pi点的坐标为:

ai: 1 4 3 5 9 12 6 20 17 8

bi: 2 10 8 18 1 4 5 10 8 9

设供应中心的位置为(x,y),要求它到最远需求点的距离尽可能小,由于此处应采用沿道路行走的距离,可知用户Pi到该中心的距离为|x-ai|+|y-bi|,从而可得目标函数如下

约束条件为

首先编写一个计算x处10个目标函数的M文件opt27_2o.m。

function f = myfun(x)

%输入各个点的坐标值

a=[1 4 3 5 9 12 6 20 17 8];

b=[2 10 8 18 1 4 5 10 8 9];

f(1) = abs(x(1)-a(1))+abs(x(2)-b(1));

f(2) = abs(x(1)-a(2))+abs(x(2)-b(2));

f(3) = abs(x(1)-a(3))+abs(x(2)-b(3));

f(4) = abs(x(1)-a(4))+abs(x(2)-b(4));

f(5) = abs(x(1)-a(5))+abs(x(2)-b(5));

f(6) = abs(x(1)-a(6))+abs(x(2)-b(6));

f(7) = abs(x(1)-a(7))+abs(x(2)-b(7));

f(8) = abs(x(1)-a(8))+abs(x(2)-b(8));

f(9) = abs(x(1)-a(9))+abs(x(2)-b(9));

f(10) = abs(x(1)-a(10))+abs(x(2)-b(10));

然后输入初值、约束条件并调用优化过程进行计算(M文件为op

t27_2.m):

x0 = [6; 6]; % 提供解的初值

AA=[-1 0

1 0

0 –1

0 1];

bb=[-5;8;-5;8];

[x,fval] = fminimax(@opt27_2o,x0,AA,bb)

计算结果为:

x =

8

8

12

fval =

13 6 5 13 8 8 5 14 9

1

可见,在限制区域内的东北角设置供应中心可以使该点到各需求点的最大距离最小。最小最大距离为14个距离单位。

结束语:

本人通过一个多月的辛苦创作,翻阅大量的图书资料,完成了该论文.本文主要解决的问题是用MATLAB得到一些复杂的函数的最小值和最大值,将MATLAB工具引入到我们工作和学习之中,有利于提高我们的工作和学习效率.

参考文献:

[1]网上下载

[2]MATLAB程序设计与应用, 刘卫国·陈昭平·张颖 (高等教育出版社)

[3]数学模型, 姜启源·谢金星·叶俊 (高等教育出版社)

---------------

附上参考资料,地址还请看附图。

2ba1fc03925fe46887403835237b3823.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值