关于matlab报错“Undefined function 'max' for input arguments of type 'sym'. ”

关于matlab报错“Undefined function 'max' for input arguments of type 'sym'. ”,第1张

这句话说的的错误是fminunc函数里面用到max函数,max函数的参数只能是数值,不能是符号变量,而你L函数里面用到符号变量m,所以报错,改为如下,

function f=L(x)

%求目标函数L的最小值

fm1=quad(@(m)((1./sqrt(3.92*pi))*exp((-(m-600).^2)/7.73))/0.95,0,x(1))%采用数值积分

fm2=quad(@(m)((1./sqrt(3.92*pi))*exp((-(m-600).^2)/7.73))/0.95,x(1),1300)%采用数值积分

f=(10./x(2))+((3000+100*x(2))*fm1+1000*fm2)./x(1)

结果

a =

1.0e+03 *

0.40003.5336

b =

0.0028

c =

1

主程序:

clear

%1 已知参数

alpha_0=0phi_0=0

theta_1=[4590135]*pi/180

theta_3=[5282112]*pi/180

d=50

%2 计算各杆长度

[l,m,n]=link_design(theta_1,theta_3,alpha_0,phi_0)

b=l*d/n

c=d*m/n

a=d/n

%3 输出计算结果

disp('计算结果1:各干相对长度')

disp('            ')

fprintf('连杆相对长度 l=%3.2f  \n',l)

fprintf('摇杆相对长度 m=%3.2f  \n',m)

fprintf('机架相对长度 n=%3.2f  \n',n)

disp('            ')

disp('计算结果2:各干长度')

disp('            ')

fprintf('曲柄长度 a=%3.2f \n',a)

fprintf('连杆长度 b=%3.2f \n',b)

fprintf('摇杆长度 c=%3.2f \n',c)

fprintf('机架长度 d=%3.2f \n',d)

disp('            ')

子程序(link_design,m)

function   [l,m,n]=link_design(theta_1,theta_3,alpha_0,phi_0)

%计算线性方程组系数矩阵A

A=[cos(theta_3(1)+phi_0),cos(theta_3(1)+phi_0-theta_1(1)-alpha_0),1

    cos(theta_3(2)+phi_0),cos(theta_3(2)+phi_0-theta_1(2)-alpha_0),1

    cos(theta_3(3)+phi_0),cos(theta_3(3)+phi_0-theta_1(3)-alpha_0),1]

% 计算线性方程组系数矩阵B

B=[cos(theta_1(1)+alpha_0)cos(theta_1(2)+alpha_0)cos(theta_1(3)+alpha_0)]

% 求解线性方程组

p=A\B

% 计算相对杆长l,m,n

p0=p(1)p1=p(2)p2=p(3)

m=p0

n=-m/p1

l=sqrt(m*m+n*n+1-p2*2*n)

结果

计算结果1:各干相对长度

            

连杆相对长度 l=2.07  

摇杆相对长度 m=1.49  

机架相对长度 n=1.81  

            

计算结果2:各干长度

            

曲柄长度 a=27.63 

连杆长度 b=57.24 

摇杆长度 c=41.11 

机架长度 d=50.00

先得信号的相位,unwrap 校正相位角,使相位在整体上连续,diff对该相位角求导至于线性计算部分跟你的调制公式有关系的,不一定。

u=cos(2*pi*fc*t+2*pi*kf*int_m)

int_m是0—t区间内对信号函数的积分。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8131124.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存