Matlab中@的用法这是一段Matlab程序,请问其中 x=fsolve(@qbyg,x0); 是什么意思?Matlab中函数调用不是y=f(x)(y是输出,f是函数名,x是输入参数)这种形式么?请大神帮忙看看.% 给定机构极限位置和最小

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 19:35:25

Matlab中@的用法这是一段Matlab程序,请问其中 x=fsolve(@qbyg,x0); 是什么意思?Matlab中函数调用不是y=f(x)(y是输出,f是函数名,x是输入参数)这种形式么?请大神帮忙看看.% 给定机构极限位置和最小
Matlab中@的用法
这是一段Matlab程序,请问其中 x=fsolve(@qbyg,x0); 是什么意思?Matlab中函数调用不是y=f(x)(y是输出,f是函数名,x是输入参数)这种形式么?请大神帮忙看看.
% 给定机构极限位置和最小传动角的铰链四杆机构运动设计(调用qbyg.m)
x0=[50 120 200 0.5];
k=1.25; % 行程速比系数
theta=pi*(k-1)/(k+1); % 极位夹角
yg=250; % 摇杆长度
psi=pi/6; % 摇杆摆角
gamin=2*pi/9; % 最小传动角
x=fsolve(@qbyg,x0);
disp ' '
fprintf (' 曲柄长度 a = %3.4f mm \n',x(1))
fprintf (' 连杆长度 b = %3.4f mm \n',x(2))
fprintf (' 机架长度 d = %3.4f mm \n',x(3))
fprintf (' 摇杆位置角 psi0 = %3.4f ° \n',x(4)*180/pi)
% 铰链四杆机构非线性参数方程组
function f=qbyg(x)
k=1.25; % 行程速比系数
theta=pi*(k-1)/(k+1); % 极位夹角
yg=250; % 摇杆长度
psi=pi/6; % 摇杆摆角
gamin=2*pi/9; % 最小传动角
% x(1)是曲柄长度;x(2)是连杆长度;x(3)是机架长度;x(4)是摇杆初始位置角
f1=(x(2)+x(1))^2+(x(2)-x(1))^2-2*(x(2)+x(1))*(x(2)-x(1))*cos(theta)-(2*yg*sin(psi/2))^2;
f2=yg^2+x(3)^2-2*yg*x(3)*cos(x(4))-(x(2)-x(1))^2;
f3=yg^2+x(3)^2-2*yg*x(3)*cos(x(4)+psi)-(x(2)+x(1))^2;
f4=yg^2+x(2)^2-2*yg*x(2)*cos(gamin)-(x(3)-x(1))^2;
f=[f1;f2;f3;f4];
还有这后面定义的qbyg这个函数是什么情况?输入是什么,输出又是什么,如果要单独运行,应该怎么用?

Matlab中@的用法这是一段Matlab程序,请问其中 x=fsolve(@qbyg,x0); 是什么意思?Matlab中函数调用不是y=f(x)(y是输出,f是函数名,x是输入参数)这种形式么?请大神帮忙看看.% 给定机构极限位置和最小
@是用于定义函数句柄的操作符.函数句柄既是一种变量,可以用于传参和赋值;也是可以当做函数名一样使用.
举例:
sin是matlab中的一个函数,但sin只是函数名,还不是函数句柄,不可以用于传参.
f = @sin;
这行代码定义了一个函数句柄,变量名是f.这样就可以当做参数传递了(这就是上面代码中的意义所在),而且还可以跟sin函数按相同的语法规则使用:
g = f; % g也是函数句柄,其“值”和f一样,都代表sin函数
y = g(pi); %可以得到y=0

end就是数组结尾的意思,从a的第一个元素以3为间隔直到a的结尾。0.8147 、0.9134 和0.2785