作业帮 > 综合 > 作业

matlab三维图程序:[X,Y]=meshgrid([200:2:300],[-pi/4:pi/100:pi/4]);

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/25 17:18:16
matlab三维图
程序:
[X,Y]=meshgrid([200:2:300],[-pi/4:pi/100:pi/4]);
M=-pi/4:pi/100:pi/4;
f=sqrt(1-((1600+(X.*cos(M+pi/4)-0.707*X+40*sin(Y)).^2+(X.*sin(M+pi/4)-0.707*X-40*cos(Y)).^2-(0.707*X-40*sin(Y)).^2-(0.707*X+40*cos(Y)).^2)./(80*X)).^2);
Z=(pi/2)/(trapz(M,f));
mesh(X,Y,Z)
运行错误
Error using ==> times
Matrix dimensions must agree.
应该是矩阵不对什么的,
函数如下
简单说明两点:1、表达式中涉及到三个变量:X、Y和M,似乎没有太好的方法避免使用循环(即使有,可能也会把程序搞得更难理解),所以程序改用循环结构.2、按照你给的表达式计算,结果Z会出现复数(我直接使用你的f表达式,没有仔细检查有没有问题,请你再自己核实一下),所以绘图分别绘制实部和虚部.代码如下:[X,Y] = meshgrid([200:2:300],[-pi/4:pi/100:pi/4]);
M=-pi/4:pi/100:pi/4;
for i = 1 : size(X,1)
    for j = 1 : size(X,2)
        x = X(i, j);
        y = Y(i, j);
        f = sqrt(1-((1600+(x.*cos(M+pi/4)-0.707*x+40*sin(y)).^2+...
            (x.*sin(M+pi/4)-0.707*x-40*cos(y)).^2-(0.707*x-...
            40*sin(y)).^2-(0.707*x+40*cos(y)).^2)./(80*x)).^2);
        Z(i, j) = (pi/2)/(trapz(M,f));
    end
end
subplot 121
mesh(X,Y,real(Z))
xlabel('{\itl}_2'); ylabel('\theta');
zlabel('Z'); title('Real part'); 
subplot 122
mesh(X,Y,imag(Z))
xlabel('{\itl}_2'); ylabel('\theta');
zlabel('Z'); title('Imaginary part'); 关于 计算Z会出现复数的问题,我们取x=200, y=0,看一下f表达式中分母的根号里面1减去的那部分的值:x=200;
y=0;
W=((1600+(x.*cos(M+pi/4)-0.707*x+40*sin(y)).^2+(x.*sin(M+pi/4)-...
    0.707*x-40*cos(y)).^2-(0.707*x-40*sin(y)).^2-...
    (0.707*x+40*cos(y)).^2)./(80*x));
plot(M,W)从画出的图很容易看到,W绝对值多数时候大于1,拿1减去W的平方再开方,当然就会得到复数了.