作业帮 > 综合 > 作业

matlab 多变量赋值数值到函数

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/19 18:09:36
matlab 多变量赋值数值到函数
t=0:0.1:2*pi
x=r1*cos(t);y=r1*sin(t)
m=5x+3y
问题1:要生成矩阵[x;y;m]
问题2:绘制(x,y,m)的图像
取r1=3,参考代码:r1=3;
t=0:0.1:2*pi;
x=r1*cos(t);y=r1*sin(t);m=5*x+3*y;
M = [x;y;m];   % 要生成矩阵[x;y;m]
plot3(x,y,m)   % 绘制(x,y,m)的图像
grid on
xlabel('x');ylabel('y');zlabel('m')
再问: 请看原版问题   t=0:0.1:2*pi   d=100;r2=10   f1=@(x,y)(r2.*x.^2 + r2.*y.^2 + d.*r2.*x).^(1/2))/(d.^2 + 2.*d.*x + x.^2 + y.^2);   注:f1中*全是点乘,^全是对前面的一个变量做幂运算   问题1:f1中哪些“.”是多余的   问题2:其中[x;y]为2*N的矩阵,求[x;y;f1]矩阵
再答: 1、既然d和r2是标量,涉及到这两个变量以及标量常数的“.”就可以删掉(用红色标出):    f1=@(x,y)(r2.*x.^2 + r2.*y.^2 + d.*r2.*x).^(1/2))/(d.^2 + 2.*d.*x + x.^2 + y.^2);
 2、问题说的不太清楚,究竟是有x、y这两个变量,还是一个[x;y]组成的矩阵?如果是前者,那再简单不过了:[x;y;f1(x,y)]。如果是后者,那这个矩阵总应该有个名字吧?设这个矩阵是M,那么表达式就是 [ M; f1(M(1,:),M(2,:)) ]。
再问: 谢谢,我刚搞matlab 2天,很多地方不明白 x取2*N矩阵第一行的值,y取2*N矩阵对应第二行的值 那么f1的值该如何表达?
再答: 上面不是已经写了吗:f1(M(1,:),M(2,:))
再问: 为什么输入f1(M(1,:),M(2,:))后,f1只有一个值?
再答: 匿名函数的表达式有错:(1)多半个括号;(2)除法应该用点除。 f1=@(x,y)(r2*x.^2 + r2*y.^2 + d*r2*x).^(1/2))/(d^2 + 2*d*x + x.^2 + y.^2);改为f1=@(x,y)(r2*x.^2 + r2*y.^2 + d*r2*x).^(1/2)./(d^2 + 2*d*x + x.^2 + y.^2);