铰链四杆机构题目&已知数据

matlab 代码

主程序文件:

function main
%输入已知数据
clear;
i1=101.6;
i2=254;
i3=177.8;
i4=304.8;
omega1=250;
alpha1=0;
hd=pi/180;
%一弧度
du=180/pi;
%2 调用子函数求出铰链的机构位移,角速度,角加速度 for n1=1:361
theta1=(n1-1)*hd; %0 到 360°
[theta,omega,alpha]=crank_cocker(theta1,omega1,alpha1,i1,i2,i3,i4);%返回的是一个确定的值的矩阵
theta2(n1)=theta(1);theta3(n1)=theta(2);
omega2(n1)=omega(1);omega3(n1)=omega(2);
alpha2(n1)=alpha(1);alpha3(n1)=alpha(2);
end
%3 角位移,角速度,角加速度的图形输出
figure(1);%figure 是建立图形的意思。系统自动从 1,2,3,4 来建立图形,数字代表第几幅图形
n1=1:361;%建立一个行向量
subplot(2,2,1);%绘制位移线图
plot(n1,theta2*du,n1,theta3*du,'k');
title('角位移线图')%设置图形标题为。
xlabel('曲柄转角、theta_1\circ')%设置 x 轴标签
ylabel('角位移/\circ')
grid on ;%显示坐标轴网格线,grid off 则关闭坐标轴网格线
hold on;%hold on 是当前轴及图像保持而不被刷新,准备接受此后将绘制的图形,多图共存。hold off(默认)则相反
text(140,170,'\theta_3') %表示在坐标 (140,170) 处添加文本'\theta_3'
text(140,30 ,'\theta_2')
%绘制角速度线图
subplot(2,2,2);
plot(n1,omega2,n1,omega3,'k')
title('角速度线图')
xlabel('曲柄转角、theta_1\circ')
ylabel('角速度/rad\cdots^{-1}')
grid on;hold on;
text(250,130,'\omega_2')
text(130,165,'\omega_3')
%角加速度线图
subplot(2,2,3);
plot(n1,alpha2,n1,alpha3,'k')
title('角加速度线图');
xlabel('曲柄转角、theta_1/\circ')
xlabel('角加速度/rad\cdots^{-2}')
grid on;hold on;
text(230,2e4,'\alpha_2')
text(30,7e4,'\alpha_3')
%铰链四杆机构图形输出
subplot(2,2,4);
x(1)=0;y(1)=0;
x(2)=i1*cos(70*hd);y(2)=i1*sin(70*hd);
x(3)=i4+i3*cos(theta3(71));y(3)=i3*sin(theta3(71));
x(4)=i4;y(4)=0;
x(5)=0;y(5)=0;
grid on;hold on;
plot(x,y)
plot(x(1),y(1),'o')
plot(x(2),y(2),'o')
plot(x(3),y(3),'o')
plot(x(4),y(4),'o')%描点,点的格式是小圆
title('铰链四杆机构')
xlabel('mm');
axis([-50 350 -20 200]);
%gtext(‘sinx’)
%4 铰链四杆机构运动仿真
figure(2)
%创建电影动画的开始
m=moviein(20)%这个函数在 2014 版本之后已经无效了
j=0;
for n1=1:5:360
j=j+1;
clf;
x(1)=0;
y(1)=0;
x(2)=i1*cos((n1-1)*hd);
y(2)=i1*sin((n1-1)*hd);
x(3)=i4+i3*cos(theta3(n1));
y(3)=i3*sin(theta3(n1));
x(4)=i4;
y(4)=0;
x(5)=0;
y(5)=0;
plot(x,y);
grid on;
hold on;
plot(x(1),y(1),'o');
plot(x(2),y(2),'o');
plot(x(3),y(3),'o');
plot(x(4),y(4),'o');
axis([-200 350 -150 200]);%axis([xmin xmax ymin ymax]) [ ] 中分别给出 x 轴和 y 轴的最大值、最小值
title('铰链四杆机构');
xlabel('mm');ylabel('mm');
%以上都是用来生成图形的,画 n1=X 时的图形
m(j)=getframe;
%{该函数格式有:
% (1)F=gefframe,从当前图形框中得到动画帧
% (2)F=gefframe(h),从图形句柄 h 中得到动画帧
% (3)F=getframe(h,rect),从图形句柄 h 的指定区域 rec 中得到动画帧
end
movie(m,2);
% 该函数的主要格式有:
% (1)movie(M),将矩阵 M 中的动画帧播放一次
% (2)movie(M,n),将矩阵 M 中的动画帧播放 n 次
% (3)movie(M,n,fps),将矩阵 M 中的动画帧以每秒 fps 帧的速度播放 n 次
%movie2avi()
end
%创建动画电影的步骤:
%001——》调用 moviein 函数对内存进行初始化(该步骤在 Matlab5.3 以上均可省略),
% 创建一个足够大的矩阵,使之能够容纳基于当前坐标轴大小的一系列指定的图形(此处称为帧)。
%002——》%使用 getframe 调用 getframe 函数生成每个帧。该函数返回一个列矢量,利用这个矢量,
%就可以创建一个电影动画矩阵.
%003——》调用 movie 函数按照指定的速度和次数运行该电影动画。
%004——》调用 movie2avi 函数可以将矩阵中的一系列动画帧转换成视频文件 avi 文件。
% 这样,即使脱离了 matlab 环境都可以播放动画。 function[theta,omega,alpha]=crank_cocker(theta1,omega1,~,i1,i2,i3,i4)
%1. 计算从动件角位移
L=sqrt(i4*i4+i1*i1-2*i1*i4*cos(theta1));
phi=asin((i1./L)*sin(theta1));
beta=acos((L*L+i3*i3-i2*i2)/(2*i3*L));
if beta<0
beta=beta+pi;
end
theta3=pi-phi-beta;%theta3 是杆 3 转过的角度
theta2=asin((i3*sin(theta3)-i1*sin(theta1))/i2);%theta2 是杆 2 转过的角度
theta=[theta2;theta3]; %2. 计算从动件的角速度
A=[-i2*sin(theta2),i3*sin(theta3);
i2*cos(theta2),-i3*cos(theta3)];%机构从动件位置参数矩阵
B=[i1*sin(theta1);-i1*cos(theta1)]; %原动件位置参数矩阵
omega=A\(omega1*B);
omega2=omega(1);omega3=omega(2);
%3. 计算从动件的角加速度
A=[-i2*sin(theta2),i3*sin(theta3);
i2*cos(theta2),-i3*cos(theta3)];
At=[-omega2*i2*cos(theta2),omega3*i3*cos(theta3);
-omega2*i2*sin(theta2),omega3*i3*sin(theta3)];
B=[i1*sin(theta1);
-i1*cos(theta1)];
Bt=[omega1*i1*cos(theta1);
omega1*i1*sin(theta1)];
alpha=[A\(-At*omega+omega1*Bt)];
end

函数代码文件:

function[theta,omega,alpha]=crank_rocker(theta1,omega1,alpha1,i1,i2,i3,i4)
%1. 计算从动件角位移
L=sqrt(i4*i4+i1*i1-2*i1*i4*cos(theta1));
phi=asin((i1/L)*sin(theta1));
beta=acos((L*L+i3*i3-i2*i2)/(2*i3*L));
if beta<0
beta=beta+pi;
end
theta3=pi-phi-beta;%theta3 是杆 3 转过的角度
theta2=asin((i3*sin(theta3)-i1*sin(theta1))/i2);%theta2 是杆 2 转过的角度
theta=[theta2,theta3]; %2. 计算从动件的角速度
A=[-i2*sin(theta2),i3*sin(theta3);
i2*cos(theta2),-i1*cos(theta1)];%机构从动件位置参数矩阵
B=[i1*sin(theta1);-i1*cos(theta1)]; %原动件位置参数矩阵
omega=A\(omega1*B);
omega2=omega(1);omega3=omega(2); %3. 计算从动件的角加速度
A=[-i2*sin(theta2),i3*sin(theta3);
i2*cos(theta2),-i3*cos(theta3)];
At=[-omega2*i2*cos(theta2),omega3*i3*cos(theta3);
-omega2*i2*sin(theta2),omega3*i3*sin(theta3)];
B=[i1*sin(theta1);
-i1*cos(theta1)];
Bt=[omega1*i1*cos(theta1);
omega1*i1*sin(theta1)];
alpha=[A\-At*omega+alpha1*B+omega1*Bt];
end

【MATLAB习题】铰链四杆机构的运动学分析的更多相关文章

  1. MATLAB PCHIP函数一阶求导分析

    MATLAB PCHIP函数一阶求导分析 摘要:本文首先根据三次立方插值的一般表达式,得出分段三次立方插值时,每个小区间上的各次项系数.分析发现,三次项.二次项.一次项系数都与小区间端点处的一阶导数值 ...

  2. Matlab imshow, image, imagesc 三者详细分析

    1.显示RGB图像 相同点:这三个函数都是把m*n*3的矩阵中的数值当做RGB值来显示的. 区别:imshow将图像以原始尺寸显示,image和imagesc则会对图像进行适当的缩放(显示出来的尺寸大 ...

  3. MATLAB灰色关联度分析

    目录 1.释名 2.举例 3.操作步骤与原理详解 4.总结 5.附录:MATLAB代码 @ 1.释名 灰色关联度分析(Grey Relation Analysis,GRA),是一种多因素统计分析的方法 ...

  4. 并联机构逆运动学用MapleSim符号来解决

    在多体机械中,平台的运动学分析(运动学问题)可以分为两类:正向运动学问题和逆向运动学问题.所谓正向运动学是指研究机构中一点(例如,机械手臂上终端操作机构或由并联机械操纵器支持的平台的中心)在空间中的位 ...

  5. [matlab] MATLAB 界面编程 傻瓜教程

    >_<:在 MATLAB 的命令窗口(Command Window)中运行 guide 命令,来打开 GUIDE 界面,如下: >_<:然后,选择空模板(Blang GUI), ...

  6. 【分享】Matlab R2015a 发布啦!

    本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html Matlab和C#混合编程文章目录:http://www.cnblogs.com ...

  7. [转载]高效使用matlab之四:一个加速matlab程序的例子

    原文地址:http://www.bfcat.com/index.php/2012/11/speed-up-app/ 这篇文章原文是matlab网站上的,我把它翻译过来同时自己也学习一下.原文见这里 这 ...

  8. im2uint8函数分析

    环境:Win7 64位 + Matlab R2010a 本次分析的函数为im2uint8,这个函数在图像处理中要用到,主要把图像数据类转换到uint8 uint8函数有效的输入的图像数据类为:logi ...

  9. 一些matlab教程资源收藏,使用matlab编程的人还是挺多的

    Matlab教程专题资源免费下载整理合集收藏 <MATLAB从入门到精通>高清文字版[PDF] 103.9MB 简体中文 <矩阵实验室>(Mathworks.Matlab.R2 ...

  10. 基于粒子群算法的分组背包MATLAB实现

    抽空看了一段时间的粒子群算法,这里仅针对其应用于动态规划中的背包问题的情况做下总结归纳,其他应用可以之后想到了再添加. 一:分组背包问题简介 假设有3个组,每组有2个物品,每种物品有3种属性,价值.体 ...

随机推荐

  1. [Mybatis Plus]lambdaQueryWrapper和QueryWrapper的选择

    结论 更推荐使用:LambdaQueryWrapper QueryWrapper:灵活但是不够类型安全 LambdaQueryWrapper:安全 分析 在MyBatis-Plus中,QueryWra ...

  2. 【WEB前端】【报错解决】This request has been blocked; the content must be served over HTTPS.

    问题描述 部署WEB项目后,开启了强制HTTPS,产生如下错误: Mixed Content: The page at 'https://ask.mllt.vip/index.php/data1.ht ...

  3. 【前端】白天/黑夜主题切换:JS读取XML预设主题实现黑白主题切换

    上扩展实现多主题选择,切换主题) 先看一下XML文档 id值不能重复,一套主题的name要相同,亮色type1,暗色type0 <?xml version="1.0" enc ...

  4. 『玩转Streamlit』--集成Plotly

    之前介绍了如何在Streamlit App中使用Matplotlib库来绘图. 本篇介绍 Steamlit结合Poltly的方法,相比于Matplotlib,Poltly的交互性更强, 更适合在Web ...

  5. Qt编写地图综合应用48-地球模式、三维模式、地铁模式

    一.前言 百度地图本身提供了普通模式.地球模式.三维模式.地铁模式等好多种,普通模式是最常用的默认的,就是那个街道图和卫星图的,而地球模式和三维模式是最近几年才新增加的,为了迎合现在越来越多的用户的需 ...

  6. Qt音视频开发20-海康sdk本地播放

    一.前言 海康sdk中包含了MP4解码播放库,对应的API函数都是PlayM4开头的,顾名思义播放MP4,海康的视频默认可以保存成MP4文件,可以用通用的播放器来播放,这就是为啥前面好多篇文章讲到的各 ...

  7. GNU Make中CPPFLAGS和CXXFLAGS之间的区别

    GNU Make 是一个流行的构建工具,用于编译和链接源代码.在 GNU Make 中,CPPFLAGS 和 CXXFLAGS 都是用于指定编译器选项的变量.它们之间的主要区别在于它们分别适用于 C ...

  8. AICA第6期-学习笔记汇总

    AICA第6期-学习笔记汇总 AICA第六期|预科班课程 1.<跨上AI的战车> 2.<产业中NLP任务的技术选型与落地> 3.<计算机视觉产业落地挑战与应对> 4 ...

  9. 【狂神说Java】Java零基础学习笔记-预科

    [狂神说Java]Java零基础学习笔记-预科 预科01:学习准备:博客 博客,英文名为Blog,它的正式名称为网络日记 为什么要写博客? 需要总结和思考.有时候我们一直在赶路,却忘了放慢脚步 提升文 ...

  10. manim边做边学--动画轨迹

    本篇介绍Manim中两个和动画轨迹相关的类,AnimatedBoundary和TracedPath. AnimatedBoundary聚焦于图形边界的动态呈现,能精准控制边界绘制的每一帧,助力我们清晰 ...