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习题】四杆机构的运动学参数求解的更多相关文章

  1. opencv通过dll调用matlab函数,图片作为参数

    [blog 项目实战派]opencv通过dll调用matlab函数,图片作为参数                   前文介绍了如何“csharp通过dll调用opencv函数,图片作为参数”.而在实 ...

  2. flink 批量梯度下降算法线性回归参数求解(Linear Regression with BGD(batch gradient descent) )

    1.线性回归 假设线性函数如下: 假设我们有10个样本x1,y1),(x2,y2).....(x10,y10),求解目标就是根据多个样本求解theta0和theta1的最优值. 什么样的θ最好的呢?最 ...

  3. 机器学习(二):感知机+svm习题 感知机手工推导参数更新 svm手推求解二维坐标超平面直线方程

    作业1: 输入: 训练数据集 \(T = {(x1; y1); (x2; y2),..., (xN; yN)}\) 其中,\(x \in R^n\), \(y \in Y = \{+1, -1\}\) ...

  4. 【matlab】设定函数默认参数

    C++/java/python系列的语言,函数可以有默认值,通常类似如下的形式: funtion_name (param1, param2=default_value, ...) 到了matlab下发 ...

  5. matlab 中“newff” 函数的参数设置

    matlab 中"newff" 函数的使用方法技巧|和各参数的意义 先来一个简单的源程序让大家练习一下: % Here input P and targets T define a ...

  6. Matlab中 awgn 函数输入参数带有‘measured’ 时snr的含义

    MATLAB中awgn 函数可以为输入信号x 添加一定大小的噪声. out = awgn(in,snr,'measured');  是一种常见的使用方法,意思是在添加噪声前先测量一下输入信号的功率,再 ...

  7. matlab中nargin函数输入参数数目

    来源:https://ww2.mathworks.cn/help/matlab/ref/nargin.html?searchHighlight=nargin&s_tid=doc_srchtit ...

  8. Matlab摄像头标定得出的参数保存为xml

    最近在做双摄像头的立体匹配,发现OpenCV定标效果不如MatLab的效果,于是用MatLab标定箱做标定,将得到的结果保存为xml,然后,提供给opencv使用.MatLab标定箱做标定得到的结果如 ...

  9. C# 二元一次方程参数求解

    本文记录了关于求直线斜率及纵截距值的简单方法,只是简单的记录下求解思路,最终还需根据具体项目进行优化. 设直线方程式为:y=kx+b 编程思想: 1.代入y1与x1的值,得到:y1=kx1+b 2.代 ...

  10. 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\ ...

随机推荐

  1. ScheduleServerRunnable2

    package com.xx.schedule.thrift.server; import com.xx.schedule.thrift.service.ScheduleService; import ...

  2. Qt编写的项目作品5-物联网管理平台

    一.功能特点 1 软件模块 设备监控模块,包括数据监控(表格形式展示).设备面板(面板形式展示).地图监控(地图形式展示).曲线监控(曲线形式展示). 数据查询模块,包括报警记录.运行记录.操作记录. ...

  3. [转]boost使用之编译库及遇到的问题

    最近因为在学习网络编程相关的东西,准备学习一下boost,毕竟原生的网络编程太麻烦.看了一下其实windows下想使用起来很简单,就是下载库,然后运行脚本,然后运行exe库就出来.在把头文件和库的目录 ...

  4. Ubuntu 20.04编译opencv-3.1.0时报错 error: 'CODEC_FLAG_GLOBAL_HEADER' was not declared in this scope

    Ubuntu 20.04源码编译安装opencv320 报错 error: 'CODEC_FLAG_GLOBAL_HEADER' was not declared in this scope的解决办法 ...

  5. [转]Windows10下CLion配置说明

    Windows10下CLion配置说明CLion 是 C/C++的 IDE,可以配置多种编译环境,本文以配置MinGW编译环境为例. 安装CLion 的安装可直接到官网下载 ZIP,文件解压后直接运行 ...

  6. [转]CopyPlugin Invalid Options options should be array ValidationError: CopyPlugin Invalid Options

    这个错误是使用webpack的一个plugin出现的错误.这个plugin是copy-webpack-plugin我把文档的例子复制,然后就报了这个错误.文档的例子: const CopyPlugin ...

  7. 微信小程序开发基础详解

    1.结构 util.js      工具类 app.js          全局工具函数 app.json      小程序配置 app.wxss     全局样式 2.生命周期 onLoad(opt ...

  8. xxl-job安装

    ---------------------------------------------------------------------------------------------------- ...

  9. ForkJoin全解2:forkjoin实际工作流程与实现

    1.相关概念解释 1.1 "内部"和外部 当一个操作是在非ForkjoinThread的线程中进行的,则称该操作为外部操作.比如我们前面执行pool.invoke,invoke内又 ...

  10. mac文件目录结构

    详解MAC硬盘中各个文件夹 详解MAC硬盘中各个文件夹 打开Macintosh HD你会发现内中有四个文件夹 分别有--应用程序(Applications).系统(System).用户(User).资 ...