黎曼几何与切空间之间的投影

news2024/11/19 19:26:27

公式:

从黎曼空间投影到切空间,其中P为黎曼均值,也是切空间的参考中心点,Pi是要投影到切空间的点。

 从切空间投影回来,其中Si为切空间中的向量。

function Tcov = CovToTan(cov,Mcov)
    Cm12 = Mcov^(-1/2);
    X_new = logm(Cm12 * cov * Cm12);
    C12 = Mcov^(1/2);
    Tcov = Mupper(C12 * X_new * C12);
end

function Cov = TanToCov(vec,Mcov)
    X = Munupper(vec);
    Cm12 = Mcov^(-1/2);
    X = Cm12 * X * Cm12;
    C12 = Mcov^(1/2);
    Cov = C12 * expm(X) * C12;
end

function T = Mupper(X)
    % Upper triangular part vectorization with diagonal preservation.
    % This function keeps the upper triangular part of the matrix and
    % vectorizes it while multiplying non-diagonal elements by sqrt(2).

    % Get the size of X
    [M, N] = size(X);
    
    % Check if matrices are square
    if M ~= N
        error('Matrices must be square');
    end
    
    % Initialize T with zeros
    T = zeros(M, M, 'like', X);
    
    % Calculate the multiplier for non-diagonal elements
    multiplier = sqrt(2);
    
    % Fill T with the upper triangular part, preserving the diagonal
    for i = 1:M
        for j = i:M
            if i == j
                T(i, j) = X(i, j);  % Diagonal element remains the same
            else
                T(i, j) = X(i, j) * multiplier;  % Non-diagonal elements multiplied by sqrt(2)
            end
        end
    end
    
    % Flatten the upper triangular part of T to a vector
    T = T(triu(true(size(T))) == 1);
    T = T';
end

function X = Munupper(T, n)
    % Reverse the operation to reconstruct the matrix from its upper triangular part.
    
    % Calculate the size of the square matrix based on the length of the input vector T
    n = round((sqrt(1 + 8 * length(T)) - 1) / 2);
    
    % Check if T is a valid upper triangular vector
    m = n * (n + 1) / 2;
    if numel(T) ~= m
        error('Invalid input. Input vector size does not match the expected size for upper triangular vectors.');
    end
    
    % Initialize the symmetric matrix X with zeros
    X = zeros(n, n, 'like', T);
    
    % Calculate the indices for the upper triangular part
    [I, J] = find(triu(ones(n)));
    
    % Reverse the vectorization and apply the appropriate scaling to non-diagonal elements
    for k = 1:numel(I)
        i = I(k);
        j = J(k);
        if i == j
            X(i, j) = T(k);  % Diagonal elements remain the same
        else
            X(i, j) = T(k) / sqrt(2);  % Reverse scaling for non-diagonal elements
            X(j, i) = X(i, j);  % Symmetric matrix
        end
    end
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1116976.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android之自定义View之底部选择弹窗

一、底部选择弹窗 效果: 1、自定义类 可自定义item数量的底部弹窗 (1)CustomBottomPop自定义类 package com.custom.jfrb.ui.first.customView; //自己的包位置import android.content.Context; import android.view.LayoutInflater; i…

聚观早报 | 遥感AI大模型发布;拼多多启动11.11大促

【聚观365】10月21日消息 遥感AI大模型发布 拼多多启动11.11大促 OPPO Find N3开启预售 魅族20 Classic开启预定 埃安昊铂HT开启预售 遥感AI大模型发布 阿里达摩院发布业内首个遥感AI大模型,一个模型即可识别农田、农作物、建筑等地表万物,让AI进一…

【2023淘宝双十一活动什么时间开始?天猫双十一2023具体时间安排

2023双十一活动什么时间开始?让我们先来了解一下双十一的优惠活动以及玩法吧。请收藏这份2023年淘宝天猫双十一玩法优惠攻略,让你轻松购得心仪的商品! 红包派送 活动期间,每天都可以领取超级红包!请注意&#xff0c…

【JavaEE重点知识归纳】第8节:面向对象程序三大特性:封装、继承、多态

目录 一:封装 1.封装的概念 2.访问限定符 3.封装扩展包 二:继承 1.概念 2.语法 3.父类成员的访问 4.super关键字 5.子类构造方法 6.super和this 7.继承方式 8.final关键字 9.继承和组合 三:多态 1.概念 2.实现条件 3.重写 …

【supervisor】 问题处理 unix:///var/run/supervisor/supervisor.sock no such file

问题描述 最近笔者在配置 supervisor,希望用 supervisor 进行进程服务管理的时候遇到了一些问题,具体是: 运行 supervisorctl status 的时候遇到了 unix:///var/run/supervisor/supervisor.sock no such file 的问题。在运行 sudo service …

MySQL日志 错误日志 二进制日志 查询日志 慢查询日志

一、错误日志 错误日志是MySQL中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 该日志是默认开启的,默认存放目录/var/log/,默认的日志文件名…

了解多媒体展厅弧幕投影系统收费构成,轻松制定预算

随着数字多媒体技术在内容展示行业中的广泛应用,基于投影、LED等技术手段的多媒体互动装置呈现多样化发展趋势,越来越多的新颖模式出现在大众眼前,其中就包括了备受关注的弧幕投影系统,作为投影技术显示形式的一种,它打…

抖音招聘直播报白有成本低和招聘效果精准的优势

抖音的短视频流量能够让岗位信息覆盖更广泛的人群,增加招聘信息的曝光度。通过抖音的短视频流量红利和精准推送,能够提高岗位信息的曝光度和求职者的留存率。如果你想做招聘报白却不知道怎么处理,可以咨询我。 创意创新:抖音招聘注重创意和创…

遍历完全二叉树节点

完全二叉树的节点个数 递归普通二叉树遍历解法 我们先来普及一下完全二叉树的概念:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层…

C语言之排序

1.冒泡排序 冒泡排序就不多说了,只需要两层循环嵌套,两两比较确定相对正确的顺序即可。 2.插入排序 插入排序的思想就是每一次向后寻找一个再将其与前面有序的部分进行对比,寻找合适位置插入。 这里关键要避免让前移超出目前读取的数字&…

Java版ORM最初雏形

经过一个晚上的加班,终于把ORM初步结构工程搭好了。工程依赖有点难用,编辑器提示比VS差很多。 首先LIS.Core创建一个最初的容器雏形,先能反射得到对象给ORM获得数据库驱动 然后ORM创建数据库驱动差异接口,不同数据库实现接口后配…

MATLAB中 tf2zpk函数用法

目录 语法 说明 示例 IIR滤波器的极点、零点和增益 tf2zpk函数的功能是将传递函数滤波器参数转换为零极点增益形式。 语法 [z,p,k] tf2zpk(b,a) 说明 [z, p, k] tf2zpk(b, a) 从传递函数参数 b 和 a 中找到零点矩阵 z,极点向量 p,以及相关的增益…

岗亭一键报警器设计

岗亭一键报警器设计 岗亭一键报警器设计人性化,拥有多种功能,例如: 紧急报警:遇到紧急情况时,只需按下报警器按钮,即可迅速向监控中心发送报警信号,以便相关人员及时采取应对措施。远程监控&am…

NLP:从头开始的文本矢量化方法

一、说明 NLP 项目使用文本,但机器学习算法不能使用文本,除非将其转换为数字表示。这种表示通常称为向量,它可以应用于文本的任何合理单位:单个标记、n-gram、句子、段落,甚至整个文档。 在整个语料库的统计 NLP 中&am…

EPLAN_007#3D图形的导入、编辑和定义

一定要打开对象捕捉,否则会严重偏移!!! 一、导入3D模型,合并模型 1、新建一个宏项目 2、导入(3D图形) 可以对目标进行旋转查看 3、合并图形(不建议合并) 框选目标 点合并…

用python写一个贪吃蛇的程序能运行能用键盘控制

用python写一个贪吃蛇的程序能运行能用键盘控制 1.源码2.运行效果 1.源码 开发库使用:pygame random 直接在终端运行:pip install pygame pycharm安装库:文件-设置-项目-Python 解释器 import pygame import random# 初始化pygame pygame…

代码随想录算法训练营第五十九天 | 647. 回文子串、516.最长回文子序列

647. 回文子串 链接: 代码随想录 (1)代码 516.最长回文子序列 链接: 代码随想录 (1)代码

文件上传漏洞靶场前十关

pass1: 只能上传照片 用burp抓包改一下数据包试试: 上传成功 菜刀getshell Pass2: 寄 Png可以,抓包: 跟pass1一样阿 Pass3: 又寄 这里用抓包改数据包,发现仍然不可以 说明后端还有对文件名后缀…

springboot中@scheduled的使用

1.主要实现类ScheduledAnnotationBeanPostProcessor 在postProcessAfterInitialization(Object bean,String beanName)方法中找到所有bean中有注解为Scheduled的方法,组装成task,添加到调度线程池中 2.Task先按线程池接口类型TaskScheduler去容器中寻找taskSchedu…

freeipa server副本同步中断,两主节点数据不一致

/var/log/messages 和/var/log/dirsrv/slapd-testhadoop-COM 日志都出现以下日志: If replication stops, the consumer may need to be reinitialized. [27/Jun/2023:05:15:09.469361922 0800] - ERR - NSMMReplicationPlugin - changelog program - repl_plugin_name_cl - a…