导航菜单
首页 >  » 正文

Matlab中不同维数矩阵相加问题 请问怎么用matlab进行图像拼接,两幅图有重叠部分,要拼接的图像是excel格式的?

Matlab中不同维数矩阵相加问题

这样:
>> A=[1,2,3;4,5,6;7,8,9],B=[1,2;3,4]
A =
     1     2     3
     4     5     6
     7     8     9
B =
     1     2
     3     4
>> [rA,cA]=size(A);
>> [rB,cB]=size(B);
>> C=zeros(max(rA,rB),max(cA,cB));
>> C(1:rA,1:cA)=A;
>> C(1:rB,1:cB)=C(1:rB,1:cB)+B;
>> C
C =
     2     4     3
     7     9     6
     7     8     9
>> [2,4,3;8,10,6;7,8,9]
ans =
     2     4     3
     8    10     6
     7     8     9

扩展资料:
注意事项
两个大小不同的矩阵是不能相加的,要实现对应位置相加,需要将纬度较小的扩展为纬度较大的矩阵,没有数据的位置填上零,形成两个大小相同的矩阵,然后再相加。
matlab最大的好处就是不用事先定义变量,按列存储数据,只要每一列的数据个数是不变的,就可以直接使用,直接使用的变量默认为矩阵,只要存储了第一列数据,其行数就确定了,但列数是可变的,不会报错,放心使用,但前提是你的行数一旦确定就不能超过第一次使用的行数,否则会报错,需要另行编制程序。

请问怎么用matlab进行图像拼接,两幅图有重叠部分,要拼接的图像是excel格式的?

1种情况:横向重叠 找到重叠的那一行就行了,然后去除多余部分 for ii=1:m if a(ii,:)==b(ii,:) result=a的上半部分+b的下半部分; end end 2种情况:纵向重叠 找到重叠的那一列就行了,然后去除多余部分

matlab提示至少缺少一个 END:语句可能从此处开始。求大神帮忙

for i = 1:27
。。。
END
最后一行的END是小写 end,你写成大写了。改了就好了。

Matlab中:在利用fmincon函数求一个约束优化问题时报这个错误: FMINCON requires all values returned by user functions to be of data type double. 希望有遇到类似问题的朋友能够帮个忙,解答一

程序还是不给你,自己学会了,要写很简单的。按照步骤,照猫画虎就可以了。由于我不能贴图,

例子中的数学模型没有写,供你参考。

 

优化工具箱提供

fmincon

函数用于对有约束优化问题进行求解,其语法格式如下:

 

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

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

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

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

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

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2, ...) 

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

[x,fval,exitflag] = fmincon(...) 

[x,fval,exitflag,output] = fmincon(...) 

其中,

x, b, beq, lb,

ub

为线性不等式约束的上、下界向量,

 A 

 Aeq 

为线性不等式约束和等式

约束的系数矩阵矩阵,

fun

为目标函数,

nonlcon

为非线性约束函数。

 

显然,其调用语法中有很多和无约束函数

fminunc

的格式是一样的,其意义也相同,在此不在重复

介绍。对应上述调用格式的解释如下:

 

fmincon(fun,x0,A,b) 

给定初值

x0

,求解

fun

函数的最小值

x

fun

函数的约束条件为

A*x 

<= 

b

x0

可以是标量或向量。

 

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

最小化

fun

函数,约束条件为

Aeq*x = beq 

 A*x <= b

。若没有

不等式线性约束存在,则设置

A=[]

b=[]

 

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

定义设计变量

x

的线性不等式约束下界

lb

和上界

ub

,使得

总是有

lb <= x <= ub

。若无等式线性约束存在,则令

Aeq=[]

beq=[]

 

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

在上面的基础上,在

nonlcon

参数中提供非线性不

等式

c(x)

或等式

ceq(x)

 fmincon

函数要求

c(x) <= 0

ceq(x) = 0

 

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

options

参数指定的参数进行最小化。

 

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,...) 

将问题参数

P1, P2

等直接传递给

函数

fun

nonlin

。若不需要这些变量,则传递空矩阵到

A, b, Aeq, beq, lb, ub, nonlcon

 options

 

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

返回解

x

处的目标函数值到

fval

 

[x,fval,exitflag] = fmincon(...) 

返回

exitflag

参数,描述函数计算的有效性,意义同无约束调用。

 

[x,fval,exitflag,output] = fmincon(...) 

返回包含优化信息的输出参数

output

 

非线性不等式约束

nonlcon

的定义方法

 

该参数计算非线性不等式约束

c(x)<=0 

和非线性等式约束

ceq(x)=0

 nonlcon 

参数是一个包含函数

名的字符串。该函数可以是

M

文件、内部文件或

MEX

文件。它要求输入一个向量

x

,返回两个变

x

处的非线性不等式向量

c

和非线性等式向量

ceq

。例如,若

nonlcon=mycon

,则

M

文件

mycon.m

须具有下面的形式:

 

function [c,ceq] = mycon(x) 

c = ...    % 

计算

x

处的非线性不等式。

 

ceq = ...   % 

计算

x

处的非线性等式。

 

若还计算了约束的梯度,即

options = optimset(GradConstr,on) 

nonlcon

函数必须在第三个和第四个输出变量中返回

c(x)

的梯度

GC

ceq(x)

的梯度

Gceq

 

function [c,ceq,GC,GCeq] = mycon(x) 

 c = ...    % 

x

处的非线性不等式。

 

 ceq = ...    % 

x

处的非线性等式。

 

 if nargout > 2   % 

被调用的

nonlcon

函数,要求有

4

个输出变量。

 

    GC = ...    % 

不等式的梯度。

 

    GCeq = ...    % 

等式的梯度。

 

 end 

4.1

应用举例

 

已知某设计问题可以简化为如下数学模型:

 

 

显然,此模型属于一个二维约束优化问题。应用

fmincon

函数求解此优化模型,需要如下几个步骤:

 

1

)编制目标函数的

M

文件

 

Matlab

主窗体的命令行中键入:

“edit myobj.m”

,并在打开的窗口中编制代码创建目标函数

M

件:

 

function f=myobj(x) 

f=2*x(1)^2+2*x(2)^2-2*x(1)*x(2)-4*x(1)-6*x(2); 

将其保存为

myobj.m

备用。

 

2

)编制非线性约数函数的

M

文件

 

若有非线性约束,则应用如下步骤创建约束函数

M

文件:在

Matlab

主窗体的命令行中键入:

“edit 

mycon.m”

并在打开的窗口中编制相应的代码创建约束函数

M

文件:

 

function [c,ceq]=mycon(x) 

非线性不等式约束条件的表达式,

c(1)=...,c(2)=... 

c(1)=x(1)+5*x(2)^2-5; 

%

非线性等式约束条件的表达式

 

ceq=[]; 

本例中没有非线性约束,故可以用上述表达方式,也可省略这一步。

 

3)

确定其他类型约束条件的系数矩阵及常数向量

 

如本例中的优化模型所示,容易确定其余的输入参数,线性不等式约束条件的系数矩阵

A

和常数向

量分别为:

 A=[1 1]

b=[2 ]

,线性等式约束不存在,故

Aeq

[],beq=[]

,设计变量

X

的上、下界向

量:

lb=[0 0]

ub=[inf inf]

,其中

inf

表示无穷大。

 

4

)调用

fmincon

函数进行求解

 

经过上述各步骤设置以后,可以编制主程序进行优化求解,相应的代码如下:

 

>> x0=[1 1]; %

设置计算初始值

 

>> options=optimset(LargeScale,off,display,iter); 

%设定优化选项参数

 

>> [x,fval,exitflag]=fmincon(@myobj,x0,A,b,[],[],lb,ub,@mycon,options) 

%进行优化求解

 

讲过运算以后得到结果如下所示:

 

Optimization terminated successfully: 

 First-order optimality measure less than options.TolFun and

 

  maximum constraint violation is less than options.TolCon

 

Active Constraints: 

    3 

    4 

x = 

    1.1190    0.8810 

fval = 

   -7.6771 

exitflag = 

    1

Matlab 系统函数H(z)零极点的分离 急啊!

ts=0.001; sys=tf(1000,[1,50,2000]); dsys=c2d(sys,ts,z) [num,den]=tfdata(dsys,v);

[r,p,k]=residue(num,den);

%%%%%%%%%%结果如下

r =

0.0002 - 0.0133i 0.0002 + 0.0133i

p =

0.9746 + 0.0362i 0.9746 - 0.0362i

k =

[]

相关推荐: