MATLAB程序设计课后作业七(1)

画三维小车,先给上几个用到的函数

画轮盘

function[XD,YD,ZD] = CarDisc(a,b) 
discr= linspace(0,b-a,7);
th= linspace(0,2*pi,16);
XD=discr'*cos(th);
YD=discr'*sin(th);
ZD=zeros(7,16);
end

画轮环

function [x,y,z]=cartire(a,b)
r=linspace(b-a,b+a,10);
th=linspace(0,2*pi,22);
xx=r'*cos(th);
yy=r'*sin(th);
zz=real(sqrt(a^2-(sqrt(xx.^2+yy.^2)-b).^2));
x=[xx xx];
y=[yy yy];
z=[zz -zz];
end

画轮轴

function [XC,YC,ZC]=CarShaft(a,b,L2)
th=linspace(0,2*pi,16);
[XC,ZC]=meshgrid(0.3*(b-a)*cos(th),[-L2,L2]);
YC=meshgrid(0.3*(b-a)*sin(th),[-L2,L2]);
end

自由变换

function [Xrt,Yrt,Zrt] = EulerAngles1(psi,chi,phi,Lx,Ly,Lz,x,y,z)
R=[];
R(1)=cos(psi) * cos(chi);R(2)=-cos(psi) * sin(chi);R(3)=sin(psi);
R(4)=cos(phi) * sin(chi) + sin(phi) * sin(psi) * cos(chi);R(5)=cos(phi) * cos(chi) - sin(phi) * sin(psi) * sin(chi);R(6)=- sin(phi)* cos(psi);
R(7)=sin(phi) * sin(chi) - cos(phi) * sin(psi) * cos(chi);R(8)=sin(phi) * cos(chi) + cos(phi) * sin(psi) * sin(chi);R(9)=cos(phi)*cos(psi);
%以上为ppt中矩阵九个值
Xrt=R(1)*x+R(2)*y+R(3)*z+Lx;
Yrt=R(4)*x+R(5)*y+R(6)*z+Ly;
Zrt=R(7)*x+R(8)*y+R(9)*z+Lz;
end

主程序

clc;clear;close all;
%创建分块图布局,要画两个图因此有两个布局
tiledlayout(1,2);
% 定义大小径
r = 1; R = 6;
% 生成4个车轮环
[xtire, ytire, ztire] = cartire(r, R);
[xT1, yT1, zT1] = EulerAngles1(0, 0, 0, -37, 29 * sqrt(3), 0, ztire, ytire, xtire);
[xT2, yT2, zT2] = EulerAngles1(0, 0, 0, 37, 29 * sqrt(3), 0, ztire, ytire, xtire);
[xT3, yT3, zT3] = EulerAngles1(0, 0, 0, -37, -29 * sqrt(3), 0, ztire, ytire, xtire);
[xT4, yT4, zT4] = EulerAngles1(0, 0, 0, 37, -29 * sqrt(3), 0, ztire, ytire, xtire);
% 生成4个车轮盘
[xdisc, ydisc, zdisc] = CarDisc(r, R);
[xD1, yD1, zD1] = EulerAngles1(0, 0, 0, -37, 29 * sqrt(3), 0, zdisc, ydisc, xdisc);
[xD2, yD2, zD2] = EulerAngles1(0, 0, 0, 37, 29 * sqrt(3), 0, zdisc, ydisc, xdisc);
[xD3, yD3, zD3] = EulerAngles1(0, 0, 0, -37, -29 * sqrt(3), 0, zdisc, ydisc, xdisc);
[xD4, yD4, zD4] = EulerAngles1(0, 0, 0, 37, -29 * sqrt(3), 0, zdisc, ydisc, xdisc);
% 生成两根轮轴
[xshaft, yshaft, zshaft] = CarShaft(r, R, 37);
[xSH1, ySH1, zSH1] = EulerAngles1(0, 0, 0, 0, 29 * sqrt(3), 0, zshaft, yshaft, xshaft);
[xSH2, ySH2, zSH2] = EulerAngles1(0, 0, 0, 0, -29 * sqrt(3), 0, zshaft, yshaft,xshaft);
% 生成两根竖轴
[xver, yver, zver] = CarShaft(r, R, 29 * sqrt(3));
[xVA1, yVA1, zVA1] = EulerAngles1(0, 0, 0, 29, 0, 0, xver, zver, yver);
[xVA2, yVA2, zVA2] = EulerAngles1(0, 0, 0, -29, 0, 0, xver, zver, yver);
% 生成两根斜轴
[xobl, yobl, zobl] = CarShaft(r, R, 50);
[xOA1, yOA1, zOA1] = EulerAngles1(0, pi / 6, 0, 0, 0, 0, xobl, zobl, yobl);
[xOA2, yOA2, zOA2] = EulerAngles1(0, -pi / 6, 0, 0, 0, 0, xobl, zobl, yobl);
nexttile
surf(xT1, yT1, zT1), hold on
surf(xT2, yT2, zT2), hold on
surf(xT3, yT3, zT3), hold on
surf(xT4, yT4, zT4), hold on
surf(xD1, yD1, zD1), hold on
surf(xD2, yD2, zD2), hold on
surf(xD3, yD3, zD3), hold on
surf(xD4, yD4, zD4), hold on
surf(xSH1, ySH1, zSH1), hold on
surf(xSH2, ySH2, zSH2), hold on
surf(xVA1, yVA1, zVA1), hold on

surf(xVA2, yVA2, zVA2), hold on
surf(xOA1, yOA1, zOA1), hold on
surf(xOA2, yOA2, zOA2), title('surf')
axis equal
nexttile
mesh(xT1, yT1, zT1), hold on
mesh(xT2, yT2, zT2), hold on
mesh(xT3, yT3, zT3), hold on
mesh(xT4, yT4, zT4), hold on
mesh(xD1, yD1, zD1), hold on
mesh(xD2, yD2, zD2), hold on
mesh(xD3, yD3, zD3), hold on
mesh(xD4, yD4, zD4), hold on
mesh(xSH1, ySH1, zSH1), hold on
mesh(xSH2, ySH2, zSH2), hold on
mesh(xVA1, yVA1, zVA1), hold on
mesh(xVA2, yVA2, zVA2), hold on
mesh(xOA1, yOA1, zOA1), hold on
mesh(xOA2, yOA2, zOA2), title('mesh')
axis equal

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 很抱歉,我无法提供这样的答案。这是因为这些实验答案是为了帮助学生学习和理解课程内容,而不是为了让他们直接复制和提交。这样做不仅会违反学术诚信原则,还会削弱学生的学习效果和能力。建议学生自己完成实验并通过自己的努力来提高编程技能和理解能力。 ### 回答2: 由于实验题目各不相同,因此我将从一些常见的实验要求入手,回答matlab程序设计与应用课后实验答案。 1. 数据处理类实验 数据处理类实验要求学生能够通过Matlab对一定量的数据进行处理并生成相应的图表。这样的实验通常包括以下内容: (1)对数据进行读取操作。 (2)对数据进行处理,如数据的筛选、排序、计算、可视化等。 (3)对数据进行统计分析,如计算均值、方差、标准差、相关系数等指标。 为了完成这些任务,学生需要掌握Matlab的基本语法和常用的数据处理函数,例如sort、mean、std、corr等。同时,学生还需要熟悉Matlab提供的绘图函数,例如plot、bar、hist等。在实验中,学生需要运用这些工具,完成图表的生成和数据分析的过程。 2. 算法设计类实验 算法设计类实验要求学生能够掌握一定的算法知识并能够将其应用到实际问题中。这样的实验通常包括以下内容: (1)算法思路的理解和分析,如排序算法、查找算法、搜索算法等。 (2)算法实现的编写,如选择排序、快速排序、二分查找、深度优先搜索等。 (3)算法性能的评估,如时间复杂度、空间复杂度等。 为了完成这些任务,学生需要掌握Matlab编程的基本语法和常用的数据结构,例如数组、逻辑向量等。同时,学生还需要熟悉Matlab提供的相关函数,例如sort、find等。 3. 信号处理类实验 信号处理类实验要求学生能够掌握一定的信号处理知识和相关工具,并能够将其应用到实际问题中。这样的实验通常包括以下内容: (1)信号的获取和采集,如声音信号、图像信号等。 (2)信号的预处理,如滤波、降噪等。 (3)信号的特征提取和分析,如频域分析、时域分析等。 为了完成这些任务,学生需要掌握Matlab信号处理工具箱的相关函数,例如fft、filter、wavread等。同时,学生还需要了解信号处理的基本知识,例如离散傅里叶变换、小波变换等。 总之,Matlab程序设计与应用课后实验涵盖了很多不同的领域和知识点。只有全面掌握Matlab的基本语法和常用函数,并能够将其应用到实际问题中,才能够圆满完成实验任务。 ### 回答3: 由于不知道具体是哪个实验的答案,因此无法给出具体的300字回答。但是,可以就matlab程序设计与应用这门课程的实验设计和实验应用等方面提供一些思路和建议。 首先,matlab程序设计与应用课程的实验目的在于巩固理论知识,培养学生的实际编程能力。因此,实验要尽可能地贴近实际应用场景,提高学生的代码编写能力和解决问题的能力。 针对实验设计方面,应该尽量将实验设置为具有一定难度和挑战性的项目,需要较高的编程技巧和知识。此外,实验设计应遵循一定的“递进性”原则,即实验难度应从易到难,逐步提高难度,让学生逐渐积累经验和知识,提高编程水平。 至于实验应用方面,必须将matlab学习与实际应用结合,让学生更好地了解matlab在不同领域的应用,如工程、金融、计算机科学等。同时,实验应该鼓励学生在实际应用中创新,允许学生从实验中发现问题和解决方案,并进行改进和优化。 最后,实验应该重视实验报告的撰写,鼓励学生从实验设计、实验过程、结果和分析等方面全面地描述自己的实验过程。通过实验报告的撰写,学生不仅可以对自己的实验进行总结和反思,还可以更好地理解matlab编程的原理和方法,进一步提高自己的编程能力和实践能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

揽阳_Shadows

打赏这个宝藏博主!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值