【MATLAB习题】四杆机构的运动学参数求解
1.问题描述
2. 推导过程
3. matlab代码
最新版代码
直接采用求微分的方式得到角度,角速度等数值解,速度慢,但是代码少,容易看懂(矩阵看起来真难受)。
以前做的一个博客文章用的是矩阵运算求解出线性方程组的方案,速度快,就是代码多一些。
%**********求解四杆机构的运动学参数***************
%1. 固定参数
l1=100 ;%单位:mm
l2=300;
l3=250;
l4=200;
w1=10.17;% rad/s
%定义角度单位换算
hd=pi/180;
jd=180/pi;
% 定义符号变量和有关的函数
syms lbd psi1
lbd(psi1)=sqrt(l4*l4+l1*l1-2*l4*l1*cos(pi-psi1));
syms theta1 theta2
theta1(psi1)= acos((l3*l3+lbd(psi1)*lbd(psi1)-l2*l2)/(2*l3*lbd(psi1)));
theta2(psi1)=asin((l1*sin(pi-psi1))/lbd(psi1));
%以上得到的结果均为弧度制
% psi3(psi1)=theta1+theta2;
% w3(psi1)=diff(psi3,psi1)*w1;
w3(psi1)=(diff(theta1,psi1)+diff(theta2,psi1))*w1;
i=1;
psi_1=zeros(1,73);
psi3=zeros(1,73);
w_3=zeros(1,73);
%循环求值
for n=0:5:360
%sin ,cos 函数是弧度制单位
psi_1(i)= n;
psi1=n*hd;
psi3(i)=theta1(psi1)+theta2(psi1);
w_3(i)=w3(psi1); %unit:rad/s
psi3(i)=psi3(i)*jd; %psi3转为角度制
i=i+1;
end
subplot(2,2,1);
plot(psi_1(:,1:73),psi3(:,1:73),'-b');
title('杆3的角度随\psi_1的变化曲线')
xlim([0 360])
xlabel('\psi_1 /\circ')
ylabel('\psi_3 / \circ')
grid on;
subplot(2,2,2);
plot(psi_1(:,1:73),w_3(:,1:73),'-r')
title('杆3的角速度曲线');
xlabel('角度')
xlim([0 360])
ylabel('角速度/rad\cdots^{-1}')
grid on;
subplot(2,2,[3 4])
[ax,h1,h2]=plotyy(psi_1,psi3,psi_1,w_3);
% 设置label
d1=get(ax(1),'ylabel');%取出左侧轴的ylabel句柄
set(d1,'string','角度值');%设置ylabel的值
d2=get(ax(2),'ylabel');%取出右侧轴的ylabel句柄
set(d2,'string','速度值');%设置ylabel的值
% 设置图例
legend([h1,h2],'角度','角速度');
%设置坐标轴刻度,范围
set(ax,'Xlim',[0 360],'xtick',[0:10:360])
history version
%**********求解四杆机构的运动学参数***************
%1. 固定参数
l1=100 ;%单位:mm
l2=300;
l3=250;
l4=200;
w1=10.17;% rad/s
%定义角度单位换算
hd=pi/180;
jd=180/pi;
% 定义符号变量和有关的函数
syms lbd psi1
lbd(psi1)=sqrt(l4*l4+l1*l1-2*l4*l1*cos(pi-psi1));
syms theta1 theta2
theta1(psi1)= acos((l3*l3+lbd(psi1)*lbd(psi1)-l2*l2)/(2*l3*lbd(psi1)));
theta2(psi1)=asin((l1*sin(pi-psi1))/lbd(psi1));
%以上得到的结果均为弧度制
i=1;
psi_1=zeros(1,74);
psi3=zeros(1,74);
psi2=zeros(1,74);
%循环求值
for n=0:5:360
%sin ,cos 函数是弧度制单位
psi_1(i)= n;
psi1=n*hd;
psi3(i)=theta1(psi1)+theta2(psi1);
psi2(i)=asin((l3*sin(psi3(i))-l1*sin(psi1))/l2);
psi2(i)=psi2(i)*jd; %弧度制转角度制
psi3(i)=psi3(i)*jd;
i=i+1;
end
plot(psi_1(:,1:73),psi3(:,1:73),'-b');
title('\psi_3')
xlim([0 360])
xlabel('\psi_1 /\circle')
ylabel('\psi_1&\psi-2 /\circ')
ylim([-360 360])
grid on;
hold on;
plot(psi_1(:,1:73),psi2(:,1:73),'-.r');
结果-速度图&角位移图
【MATLAB习题】四杆机构的运动学参数求解的更多相关文章
- opencv通过dll调用matlab函数,图片作为参数
[blog 项目实战派]opencv通过dll调用matlab函数,图片作为参数 前文介绍了如何“csharp通过dll调用opencv函数,图片作为参数”.而在实 ...
- flink 批量梯度下降算法线性回归参数求解(Linear Regression with BGD(batch gradient descent) )
1.线性回归 假设线性函数如下: 假设我们有10个样本x1,y1),(x2,y2).....(x10,y10),求解目标就是根据多个样本求解theta0和theta1的最优值. 什么样的θ最好的呢?最 ...
- 机器学习(二):感知机+svm习题 感知机手工推导参数更新 svm手推求解二维坐标超平面直线方程
作业1: 输入: 训练数据集 \(T = {(x1; y1); (x2; y2),..., (xN; yN)}\) 其中,\(x \in R^n\), \(y \in Y = \{+1, -1\}\) ...
- 【matlab】设定函数默认参数
C++/java/python系列的语言,函数可以有默认值,通常类似如下的形式: funtion_name (param1, param2=default_value, ...) 到了matlab下发 ...
- matlab 中“newff” 函数的参数设置
matlab 中"newff" 函数的使用方法技巧|和各参数的意义 先来一个简单的源程序让大家练习一下: % Here input P and targets T define a ...
- Matlab中 awgn 函数输入参数带有‘measured’ 时snr的含义
MATLAB中awgn 函数可以为输入信号x 添加一定大小的噪声. out = awgn(in,snr,'measured'); 是一种常见的使用方法,意思是在添加噪声前先测量一下输入信号的功率,再 ...
- matlab中nargin函数输入参数数目
来源:https://ww2.mathworks.cn/help/matlab/ref/nargin.html?searchHighlight=nargin&s_tid=doc_srchtit ...
- Matlab摄像头标定得出的参数保存为xml
最近在做双摄像头的立体匹配,发现OpenCV定标效果不如MatLab的效果,于是用MatLab标定箱做标定,将得到的结果保存为xml,然后,提供给opencv使用.MatLab标定箱做标定得到的结果如 ...
- C# 二元一次方程参数求解
本文记录了关于求直线斜率及纵截距值的简单方法,只是简单的记录下求解思路,最终还需根据具体项目进行优化. 设直线方程式为:y=kx+b 编程思想: 1.代入y1与x1的值,得到:y1=kx1+b 2.代 ...
- MATLAB学习(四)线性方程求解,多项式运算,函数局部最优解
>> A=[2 1 3;1 3 2];B=[5;10] B = 5 10 >> X=lsqnonneg(A,B) X = 0 2.8571 0.7143 >> A\ ...
随机推荐
- StarRocks元数据无法合并
一.先说结论 如果您的StarRocks版本在3.1.4及以下,并且使用了metadata_journal_skip_bad_journal_ids来跳过某个异常的journal,结果之后就出现了FE ...
- 即时通讯技术文集(第29期):IM开发技术合集(Part2) [共18篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第29 期. [- 1 -] 谈谈移动端 IM 开发中登录请求的优化 [链接] http://w ...
- 给 Python 添加进度条 | 给小白的 tqdm 精炼实例!
给 Python 添加进度条 | 给小白的 tqdm 精炼实例! 假设我们有一个循环: for i in range(100): do_something() # 这里做某些事 假设 do_somet ...
- 使用sphinx-book-theme构建文档
使用sphinx-book-theme构建文档 sphinx-book-theme https://www.sphinx-doc.org/en/master/#confval-language pip ...
- WPF 资源定义空字符串或者空格问题
xmlns:sys="clr-namespace:System;assembly=mscorlib" WPF在XAML的资源中定义空字符串String.Empty 代码如下: &l ...
- 浅说 c++20 coroutine
浅说cppcoro 上一篇<浅说c/c++ coroutine>介绍了stackful协程,举了win32 Fiber跟tencent/libco为例. 本篇https://www.cnb ...
- Robot Framework 自动化测试部署常见问题及处理方法(二)
书接上文 4.使用Open Browser关键字打开浏览器报错"WebDriverException: Message: 'geckodriver' executable needs to ...
- Docker网络:Docker0、容器互联技术--link、自定义网络、实战部署Redis集群
一.Docker网络 ● --理解Docker0 在干净的Linux环境上安装docker(将docker 的所有镜像.容器先删除,干干净净!)实验: 1.查看本地网络信息 ip addr 可见有三个 ...
- 解决webstorm无法识别@等,无法ctrl跳转问题,vue项目配置
1.1. 配置webpack.config.js文件 /*为了webstorm识别vite中设置的别名*/ 'use strict' const path = require('path') modu ...
- 个人数据保全计划:部署joplin server笔记同步服务
前言 在这个数据爆炸的时代,个人数据的价值愈发凸显,成为我们生活与工作中无可替代的重要资产.上一篇文章里,我介绍了从印象笔记迁移至 Joplin 的过程,这是我寻求数据自主掌控的关键一步.在探索同步方 ...