查看: 109|回复: 5|关注: 0

[已答复] 程序结果出现:z必须为矩阵,不能是标量或矢量,怎么修改

[复制链接]

新手

5 麦片

财富积分


050


5

主题

11

帖子

0

最佳答案
发表于 2019-10-10 15:14:12 | 显示全部楼层 |阅读模式
for e=0:pi

    for f=0:pi

        for q=-400:20:400

            x=400*cos(e)*sin(f);

            y=-400*sin(e);

            z=400*cos(e)*cos(f)+q;

            z=real(z)

        end

    end

end


  surf(x,y,z)

            




入门

151 麦片

财富积分


50500


1

主题

48

帖子

3

最佳答案
  • 关注者: 1
发表于 2019-10-10 16:08:09 | 显示全部楼层
首先,你的程序生成的不是一个矩阵在于每次循环都会覆盖上一循环的值,只保存了最终的一个结果,应该让每次循环的值都保存在变量中;
另外还有一个问题是你的变量e和f使用的是默认步长,这样你的e和f=[0 1 2 3],但是q却是一个1×41的矩阵,在维度上是不符合的;
我尝试更改了一下发下你的z=的表达式可能存在逻辑上的问题,能否把你想要解决的问题发出来讨论一下

新手

5 麦片

财富积分


050


5

主题

11

帖子

0

最佳答案
 楼主| 发表于 2019-10-10 16:39:08 | 显示全部楼层
tongyee 发表于 2019-10-10 16:08
首先,你的程序生成的不是一个矩阵在于每次循环都会覆盖上一循环的值,只保存了最终的一个结果,应该让每次 ...


% 名称:upu-2uu并联机构工作空间
% 时间:2019年9月15日
tic
clear
pack
clc
%结构参数初始化
clear;
clc;
Lmin=400;%支链一最小长度
Lmax=800;%支链一最大长度
L2=500;%支链二长度
L3=500;%支链三长度
r=300;%动平台外接圆半径
R=600;%定平台外接圆半径
thetamax=pi/4;
thetamin=-pi/4;
zmax=800;
zmin=0;
hold on
grid on
xlabel('x')
ylabel('y')
zlabel('z')
title('工作空间')

theta=0:pi/50:pi;
phi=0:pi/50:pi;
ll=length(theta);
mm=length(phi);
for q=-100:20:300
    L=q+500;
    for i=1:ll
        for j=1:mm
            x=400*cos(i)*sin(j);
            y=-400*sin(i);
            z=400*cos(i)*cos(j)+400;
%求解分支一的约束条件           
              l1x=r*sin(j)*cos(i);
              l1y=r*cos(i);
              l1z=sqrt(L^2-l1x^2-(R-l1y)^2)+400;
              
        % 1 U副转角约束条件
              theta1=atan((R-l1x)/l1z);%u副角1;
        
%求解分支二的约束条件
              l2x=-150*sqrt(3)*cos(j)-150*sin(j)*cos(i);
              l2y=-150*cos(i);
              l2z=sqrt(L2^2-(l2x+r*sqrt(3))^2-(l2y+r)^2)+400;
         % 2 U副转角约束条件
              theta2=atan(-(l2x+r*sqrt(3))/l2y);%u副角1;
%求解分支三的杆长约束条件
              l3x=150*sqrt(3)*cos(j)-150*sin(j)*cos(i);
              l3y=-150*cos(i);
              l3z=sqrt(L3^2-(l3x-r*sqrt(3))^2-(l3y+r)^2)+400;
         % 1 U副转角约束条件
              theta3=atan(-(l3y+r*sqrt(3))/l3z);%u副角3;
           
           if ((thetamin>=theta1)&&(theta1<=thetamax))&&((thetamin>=theta2)&&(theta2<=thetamax))&&((thetamin>=theta3)&&(theta3<=thetamax))
                ax(i,j)=x;
                ay(i,j)=y;
                az(i,j)=z;      
               
        
           end
        end
    end
end
plot3(x,y,z)
hold on
toc


老哥你看我这个应该怎么改改,弄了好久但是问题不断。

新手

5 麦片

财富积分


050


5

主题

11

帖子

0

最佳答案
 楼主| 发表于 2019-10-10 16:42:09 | 显示全部楼层
我的t 发表于 2019-10-10 16:39
% 名称:upu-2uu并联机构工作空间
% 时间:2019年9月15日
tic

我这个是想要求出并联机构工作空间,假设i,j为角度变化,q为杆长变化,编程求解工作空间三维图像(X,Y,Z)

入门

151 麦片

财富积分


50500


1

主题

48

帖子

3

最佳答案
  • 关注者: 1
发表于 2019-10-10 16:47:13 | 显示全部楼层
我的t 发表于 2019-10-10 16:42
我这个是想要求出并联机构工作空间,假设i,j为角度变化,q为杆长变化,编程求解工作空间三维图像(X,Y,Z ...

:'(太专业了搞不了

新手

5 麦片

财富积分


050


5

主题

11

帖子

0

最佳答案
 楼主| 发表于 2019-10-10 17:07:39 | 显示全部楼层

好吧,谢谢了


您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表