树系统的全关联矩阵、通路矩阵

本文介绍了如何在MATLAB中实现树系统的全关联矩阵和通路矩阵。全关联矩阵的每一列由两个非零元素表示,通路矩阵则通过广度优先搜索策略来构造。此外,还提供了寻找路径、判断铰链是否在路径上的方法,并给出了相关函数的详细说明。代码和教程可在CSDN文库及哔哩哔哩找到。
摘要由CSDN通过智能技术生成

目录

前言:   

实现:

寻找路径:

判断是否在路上,且返回值

整体实现矩阵:

调用:



前言:   

        有向图,多刚体动力学的基本图论思想、铰链(弧)、邻接刚体、整标函数、内外侧刚体等基本概念已经知道。

        因为是树系统,构建就比较简单,每一个刚体到零刚体的路只有一条。非树系统通过切铰、切刚体转为树系统。

        总的输入参数包括 铰链的序号、及每一个铰链的起点刚体、终点刚体,以及全部的铰链数目。采取matlab2021a编程,设置为结构体输入。且铰链序号从1→n 顺序排列。

        全部代码链接:树系统全关联矩阵通路矩阵.7z-其它文档类资源-CSDN文库

         代码和文章里的一样,不用下载。

        bilibil链接:树系统的全关联矩阵、通路矩阵 - 哔哩哔哩 (bilibili.com)


实现:

        全关联矩阵是比较容易实现的,因为每一个铰链对应两个刚体,且必为起点、终点,也就是全关联矩阵中没一列只有两个值是-1,1,其余为0。即每一列和为0。

        通路矩阵相较难实现。当然可以利用TS = ST =E,计算,但是本意是想用该式验证通路矩阵正确性。通路矩阵设计以下几个分步骤:      

        1、得到零刚体B0到任一刚体Bi的路径

        2、判断铰链是否在该该路上,且是否指向零刚体

其中第一步采取广度优先的搜索策略。matlab中  [0,1,2,[3,4],[],5] = [0,1,2,3,4,5] 比较方便


寻找路径:

1、实现每一个点的子节点。

        输入:一个点的编号;全部点的数据(2行n列,矩阵,第一行是起点,第二行终点)、closeTable(存储已经遍历过的列,不重复)

        输出:子节点(向量), 新的closeTable 

%得到下一层的点 输入:当前点(一个数)、整体点的数据(2,n)、closeTable
function [nextLayerPoints, closeTable] = getNextLayerPoints(nowPoint, hingleInOut, closeTable)
    isNowPoint = hingleInOut == nowPoint;%返回整体数据中包含当前点的状态
    nextLayerPoints = [];
    for j = 1:size(hingleInOut, 2)
        %若已经遍历过了 则跳过
        if(sum(closeTable == j))
            continue;
        end
        %若找到了 则存储 并
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值