matlab 计算指北角,用MATLAB如何计算出矩形区域内的最大值?
在MATLAB图像处理工具箱(Image Processing Toolbox)的GUI函数中,有一些用来在图像或坐标轴上选择矩形或椭圆区域的函数,使用示例如下:
第一行代码:显示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块区域的位置是不固定的,求解,算法思路。
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]数学模型, 姜启源·谢金星·叶俊 (高等教育出版社)
---------------
附上参考资料,地址还请看附图。
matlab 计算指北角,用MATLAB如何计算出矩形区域内的最大值?相关推荐
- matlab 计算指北角,尔雅通识课《科学计算与MATLAB语言-示范教学包》网课答案
尔雅通识课<科学计算与MATLAB语言-示范教学包>网课答案 自然具有的价值 答:审美价值 科学价值 经济价值 生命支撑价值 酵母菌产生的有性孢子是 答:子囊孢子 空调系统的节能运行工况, ...
- matlab 计算指北角,最优化方法MATLAB4
b=[200 -100 -50]; lb=zeros(2,1); [x,fval,attainfactor,exitflag] = - fgoalattain(@opt26_4o,x0,goal,we ...
- matlab 计算指北角,运筹学及MATlab编程.doc
运筹学及MATlab编程 一. MATLAB中的优工具箱 利用Matlab的优化工具箱,可以求解线性规划.非线性规划和多目标规划问题.具体而言,包括线性.非线性最小化,最大最小化,二次规划,半无限问题 ...
- matlab计算重心的函数,MATLAB计算出图像中多个物体的个数及重心.doc
MATLAB计算出图像中多个物体的个数及重心 计算出原始图像中物体的个数及每个物体的中心,并显示出来 I=imread('keshe17.bmp'); //主函数 figure(1),imshow(I ...
- spwm matlab 计算波表,利用MATLAB计算SPWM脉冲宽度与并应用STM32输出
先上一张spwm波形生成原理图: 首先利用MATLAB产生三角波与正弦波叠加: %% 产生正弦波与三角波叠加 y1=abs(sawtooth(a*2*pi*m,0.5));%三角波 y2=0.8*si ...
- matlab计算膜孔径分布,应用Matlab绘制活性炭吸附等温线和孔径分布图
第 31 卷 第 9 期 2012 年 9 月 实 验 室 研 究 与 探 索 RESEARCH AND EXPLORATION IN LABORATORY Vol. 31 No. 9 Sep. 20 ...
- matlab计算macd_[原创]基于MATLAB的一个简单的交易策略(基于MACD)的Matlab代码
%%此程序用来计算MACD指标并对其有效性进行回测检验 %%原始数据命名为stk_clpr,且第一列为收盘价,第二列为交易日期 %% 计算相关指标(这里也可编一个函数),第一天初始化:DIFF=DEA ...
- matlab计算sinx近似值,《Matlab与数学实验》期末作业
<Matlab与数学实验>期末作业 深圳大学考试答题纸 (以论文.报告等形式考核专用) 二○一 四 -二○一 五 学年度第 一 学期 课程编号 1601600001 学 号 2013800 ...
- matlab计算幂律分布,Matlab拟合曲线之幂律分布
收集的问题: 如何用matlab来拟合幂律分布,怎样将拟合值和实际值进行对比,放在一个图中,又如何检验实际数据是否符合拟合函数. 如果不符合,如何来直接判断实际数据服从什么样的函数分布呢 在MATLA ...
最新文章
- torch量化训练后导出onnx模型并运行
- php date strtotime的用法
- 优点 spark_spark(一)
- AutoScaling 生命周期挂钩功能
- 【转】自然语言系列学习之表示学习与知识获取(五)融合文本和知识,利用cnn方法进行关系抽取
- CRDT——解决最终一致问题的利器
- json转string示例_C.示例中的String.Insert()方法
- Hadoop 集群的基准测试
- 【Kubernets】——搭建k8s多节点集群
- 045-Java-036
- win7桌面右下角的小喇叭音量图标不见了怎么办
- c语言编写一个程序计算某年某月有几天,c语言:输入某一年的第几天,计算并输出它是这一年的第几月第几日,具体怎样编程...
- 艾司博讯:拼多多一件代发操作步骤
- 如何才能画出透亮迷人的双眼?
- 大华摄像头WEB集成--rstp拉流
- java接口里面可以定义变量么?
- Activity onDestroy() 回调缓慢问题分析及完美解决方案
- 安卓开发(一)快速搭建Android开发环境
- 初级计算机硬件试题,新版初级计算机操作员应知考试试题
- Java实验报告(四)
热门文章
- PHP-获取文件后缀名,并判断是否合法
- 基于arduino UNO R3的远程可控的红外热释传感器 (转)
- springboot注释详解
- [bzoj1700]: [Usaco2007 Jan]Problem Solving 解题
- Linux下安装MySQL数据库以及用C语言编程存取数据库
- 关于getResource(/)的读取路径问题
- upupoo设置HTML壁纸,win10 upupoo黑屏怎么解决-解决upupoo设置壁纸黑屏的方法 - 河东软件园...
- Failed to connect to github.com port 443 after 21505 ms: Timed out
- python去重复功能_python包中的statmodels,如何处理完全重复的功能?
- bootstrap input不允许为空_SpringCloud Stream你所不知道的进阶实战