当前位置: 首页 > news >正文

subs 符号函数 在带入数值过程中提高计算速度的方法

来源

机器人 transformation matrix 中,使用了符号变量,在对关键变量使用数值带入计算时耗时很长。

计算方法

T_t2b_RPY_tmp 是 transformation matrix,包含关节变量 theta_R theta_P theta_Y

for 循环一个位置一个位置算

tic
BBB = zeros(4,4,prod(num_point));
p = 0;
for i = Roll
for j = Pitch
for k = Yaw
p = p + 1;
BBB(:,:,p) = double(subs(T_t2b_RPY_tmp, {theta_R theta_P theta_Y}, {i j k}));
end
end
end
toc

传递矩阵中的每个元素分开计算

tic
for i = 1:4for j = 1:4Result_Tmp = double(subs(T_t2b_RPY_tmp(i,j), {theta_R theta_P theta_Y}, {X Y Z}));T_ij = Resort_Result_Mesh_Sepa(Result_Tmp);T_RPY(i,j,:) =  T_ij;end
end
toc
isequal(T_AIO_RPY, T_RPY)function Trans_Matrix_Resort = Resort_Result_Mesh_Sepa(T)
% 在 transformation matrix 每个元素 【单独】 计算中,subs 函数返回的是一个 mxnxp 矩阵,
% 具体取决于 meshgrid 的输入,在对应关系上,是 z轴 维度先计算,需要重新按 z轴 重新排列
% 数据,保证重拍后矩阵的 z维度变量 和 按 for-loop 可以一一对应AAA = zeros(1,numel(T));
% tmp = [];
sz3 = size(T,3);
% tic
k = 0;
for j = 1:size(T, 2)for i = 1:size(T,1)
%         tmp=[tmp, reshape(double(T(i,j,:)), 1, [])];k = k + 1;AAA(sz3*(k-1)+1 : sz3*k) = reshape(double(T(i,j,:)), 1, []);end
end
% isequal(tmp, AAA)
% toc
Trans_Matrix_Resort = AAA;end

subs 函数 直接计算 传递矩阵

p = 0;
for i = 1:length(Roll)for j = 1:length(Pitch)for k = 1:length(Yaw)p = p + 1;index_RPY(p,:) = [p, i,j,k];endend
end
[X, Y, Z] = meshgrid(Roll,Pitch,Yaw); 		% Roll,Pitch,Yaw 关节角度序列
tic
Result_Tmp = double(subs(T_t2b_RPY_tmp, {theta_R theta_P theta_Y}, {X Y Z}));
toc
% 检测对应关系然后还原旋转矩阵
num_point = [Roll_Point, Pitch_Point, Yaw_Point];
T_AIO_RPY = Resort_Result_Mesh_AIO(Result_Tmp, index_RPY, num_point);function Trans_Matrix_Resort = Resort_Result_Mesh_AIO(T_Tmp, index, num_pt)
% 这个函数把 通过 meshgrid 方法 【一次】 求出的 transformation matrix 重新排列% tic
for p = 1:size(index,1)i = index(p,2);j = index(p,3);k = index(p,4);% 由于 meshgrid 后维度上 Y 和 X 交换,详情看帮助,注意 demension 变化。% 此处需要交换 x y 坐标tmp = i;i = j;j = tmp;Trans_Matrix_Resort(:,:,p) = [T_Tmp(i,j,k),               T_Tmp(i,j+num_pt(1)*1,k),               T_Tmp(i,j+num_pt(1)*2,k),              T_Tmp(i,j+num_pt(1)*3,k)         T_Tmp(i+num_pt(2)*1,j,k),	T_Tmp(i+num_pt(2)*1,j+num_pt(1)*1,k),	T_Tmp(i+num_pt(2)*1,j+num_pt(1)*2,k),  T_Tmp(i+num_pt(2)*1,j+num_pt(1)*3,k)T_Tmp(i+num_pt(2)*2,j,k),	T_Tmp(i+num_pt(2)*2,j+num_pt(1)*1,k),	T_Tmp(i+num_pt(2)*2,j+num_pt(1)*2,k),  T_Tmp(i+num_pt(2)*2,j+num_pt(1)*3,k)T_Tmp(i+num_pt(2)*3,j,k),	T_Tmp(i+num_pt(2)*3,j+num_pt(1)*1,k),	T_Tmp(i+num_pt(2)*3,j+num_pt(1)*2,k),  T_Tmp(i+num_pt(2)*3,j+num_pt(1)*3,k)];
end
% tocend

上面计算还是符号运算,速度还是有限

直接把传递矩阵转成函数进行数值计算更快

相关文章:

  • 部署node.js+express+mongodb(更新中)
  • Visual Studio 2013 “即将退休”
  • 顺序表的实现(C语言)
  • pytest conftest通过fixture实现变量共享
  • Django 10 表单
  • CSS3渐变属性详解
  • 基于Springboot的在线考试系统
  • 内网安全实战防御技术和防御产品
  • CISSP 第9章:安全脆弱性、威胁和对策
  • 在 Mac 上轻松安装和配置 JMeter
  • CMake 中 install 命令用于定义安装规则,指定构建目标(如可执行文件、库等)和文件应该被安装到的位置。
  • 用可视化案例讲Rust编程1. 怎么能学会Rust
  • 从零开始:创建与维护一个成功的前端开源项目实操指南
  • 2024前端炫酷源码分享(附效果图及在线演示)
  • 揭开JavaScript数据类型的神秘面纱
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【React系列】如何构建React应用程序
  • Android Volley源码解析
  • C++11: atomic 头文件
  • Fabric架构演变之路
  • IndexedDB
  • JAVA SE 6 GC调优笔记
  • Laravel核心解读--Facades
  • leetcode-27. Remove Element
  • Otto开发初探——微服务依赖管理新利器
  • python3 使用 asyncio 代替线程
  • Vue 重置组件到初始状态
  • Vue--数据传输
  • 复习Javascript专题(四):js中的深浅拷贝
  • 理解在java “”i=i++;”所发生的事情
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (4)Elastix图像配准:3D图像
  • (翻译)terry crowley: 写给程序员
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (论文阅读30/100)Convolutional Pose Machines
  • (五)MySQL的备份及恢复
  • (转)C#调用WebService 基础
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (转载)CentOS查看系统信息|CentOS查看命令
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • ..回顾17,展望18
  • .cn根服务器被攻击之后
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net 流——流的类型体系简单介绍
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET构架之我见
  • .NET性能优化(文摘)
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @Query中countQuery的介绍
  • []指针
  • [04] Android逐帧动画(一)