【Quest开发】手柄交互震动
软件:Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72(要提前导入哦)
硬件:Meta Quest3
参考Meta开发文档:https://developers.meta.com/horizon/documentation/unity/unity-haptics-sdk-integrate
这篇官方文档写得特别清晰明了强烈建议大家自己去看一看
效果:实现触碰物体时触碰的手柄震动
前置准备:导入Haptics示例包
我的目的是用里面的震动文件(.haptic),你们要是自己有也可以不导入samples
这个sdk很简单,有两种方式控制震动(HapticSource和HapticPlayer),两种方式能达到的效果是完全一样的,使用这两个类可以控制以下属性
Amplitude 振幅Amplitude refers to the strength or intensity of the vibration. It is a property on both APIs controlling how much force the actuator (the component that generates the haptic feedback) generates through vibrations. When playing back a haptic clip in Unity, adjust theamplitude
property either in advance of or during playback (dynamically at runtime).
振幅是指振动的强度或强度。它是两个 API 上的一个属性,用于控制执行器(生成触觉反馈的组件)通过振动产生的力的大小。在 Unity 中播放触觉片段时,可以在播放之前或播放期间(在运行时动态)调整amplitude
属性。Frequency 频率Frequency refers to the speed at which the actuator vibrates. A higher frequency value will result in a faster vibration, while a lower frequency value will result in a slower vibration. The frequency of a haptic clip can also be adjusted using thefrequencyShift
property on both APIs. This allows developers to create haptic effects that change frequency over time, such as a vibration that starts off slow and gradually increases in speed.
频率是指执行器振动的速度。频率值越高,振动越快,频率值越低,振动越慢。还可以使用两个 API 上的frequencyShift
属性调整触觉片段的频率。这样,开发人员就可以创建随时间改变频率的触觉效果,例如,振动从缓慢开始,然后逐渐增加速度。By adjusting the amplitude and frequency properties, developers can create a wide range of haptic effects.
通过调整幅度和频率属性,开发人员可以创建各种各样的触觉效果。Playback priority 播放优先The priority property determines the order in which haptic clips are played when multiple HapticSources and/or HapticClipPlayers are active at the same time. The priority is a value between 0 and 255, with lower values taking precedence over higher values.
当多个 HapticSources 和/或 HapticClipPlayers 同时处于活动状态时,优先级属性决定了触觉剪辑的播放顺序。优先级是介于 0 和 255 之间的值,较低的值优先于较高的值。When multiple HapticSources and/or HapticClipPlayers are playing haptic clips simultaneously, the one with the highest priority will play its clip first. If two or more have the same priority, the one that was started most recently will take precedence. You can set thepriority
on either API using the priority property in the Unity editor or through scripting. For example:
当多个HapticSources和/或HapticClipPlayers同时播放触觉剪辑时,优先级最高的将首先播放其剪辑。如果两个或多个优先级相同,则最近启动的将优先。您可以使用 Unity 编辑器中的优先级属性或通过脚本在任一 API 上设置priority
。例如:hapticSource.priority = 128;
Or: 或者:hapticClipPlayer.priority = 128;
This would set the priority to 128, which is a medium-high priority. It’s important to note that the priority only affects the playback of haptic clips when multiple sources/players are active at the same time. If only one is active, its priority has no effect on playback.
这会将优先级设置为 128,即中高优先级。需要注意的是,优先级仅在多个源/播放器同时处于活动状态时才会影响触觉剪辑的播放。如果只有一个处于活动状态,则其优先级对播放没有影响。When a HapticSource/HapticClipPlayer starts playback, it will interrupt a currently active source/player of the same or lower priority. Once it finishes playback, the source/player with the next highest priority will resume triggering vibrations.
当 HapticSource/HapticClipPlayer 开始播放时,它将中断当前处于活动状态的、优先级相同或更低的源/播放器。一旦播放完毕,下一个最高优先级的源/播放器将恢复触发振动。Loop haptics 循环触觉Use theloop
/isLooping
property of the HapticSource or HapticClipPlayer respectively. This property allows you to enable or disable looping of clip playback. You can call this property before or during playback. If you set it totrue
, the haptic clip will continue playing indefinitely until you callStop()
or disable looping again.
分别使用 HapticSource 或 HapticClipPlayer 的loop
/isLooping
属性。此属性允许您启用或禁用剪辑播放的循环。您可以在播放之前或播放期间调用此属性。如果将其设置为true
,触觉剪辑将无限期地继续播放,直到您再次调用Stop()
或禁用循环。
一、现成的组件HapticSource
这个东西是不是看起来很眼熟,有点像AudioSource,用法也差不多,可以在代码里配值也可以在场景里直接设置好,我的项目没用这个组件,就不展开讲了,感兴趣的朋友自己研究一下,在代码里用这个库就行了
using Oculus.Haptics;
HapticSource hapticSource;
二、只能在代码里实例化的HapticClipPlayer
这个类必须要实例化了才能使用,示例如下
达到触摸某物体就会震动的效果
1、代码及思路:就是用trigger检测触碰,检测到了就播放震动,同时记录是哪只手触发的trigger,使其对应手柄播放震动
public class NormalHapticTrigger : MonoBehaviour{public HapticClip hoverHaptic;HapticClipPlayer hapticClipPlayer;Controller activatedController = Controller.Right;void Start(){hapticClipPlayer = new HapticClipPlayer(hoverHaptic);}void OnTriggerEnter(Collider other)//其实如果想要更真实的物理效果的话,用OnCollisonEnter更好一些{if (other.name.Contains("PalmTrigger")){if (other.name.Contains("Left")){Debug.Log("Left Hand");activatedController = Controller.Left;}else if (other.name.Contains("Right")){Debug.Log("Right Hand");activatedController = Controller.Right;}//震动hapticClipPlayer.Play(activatedController);}}}
2、场景内配置
1)创建被交互物体
该脚本应该挂在被触碰到时需要手柄震动的物体上,我这里就建了个正方体,别忘了挂上碰撞体(这样才能触发trigger)
2)给HoverHaptic赋值
这里你只要前面导了示例包一打开一堆哈,(只是看看效果的话)随便选一个就行
3)配置手柄上触发器子物体
我的代码为了确定是哪只手柄需要触发震动,限定了if (other.name.Contains("PalmTrigger"))这个条件,所以需要在手柄的子物体里添加名字含有PalmTrigger的空物体
另外,左右手柄的trigger子物体名字加上Left/Right以便区分具体是哪个手柄触发
触发器发消息需要一方同时具有勾上trigger的collider和rigidbody
4)运行
这个效果不好展示,这样配置以后用手柄去触碰挂了我提供的代码的物体手柄就会震动了
最后,Meta提供了一个软件来帮助大家根据自己的音频来制作震动效果,我粗略扫了一眼也是傻瓜式操作(大概),感兴趣的朋友可以去试试,我暂时还没到这个需求
https://developers.meta.com/horizon/resources/haptics-studio
再贴一个关于HapticClipPlayer的API参考
https://developers.meta.com/horizon/reference/upm-haptics/v72/class_oculus_haptics_haptic_clip_player/
HapticClipPlayer provides controls for playing a HapticClip.
HapticClipPlayer提供播放HapticClip的控制。A HapticClipPlayer only plays valid HapticClips. You can start and stop a HapticClip assigned to a HapticClipPlayer as often as required.
HapticClipPlayer仅播放有效的HapticClip 。您可以根据需要随时启动和停止分配给HapticClipPlayer的HapticClip 。A HapticClipPlayer can be in a stopped, playing, or paused state. By default a HapticClipPlayer is in a stopped state. A player returns to the stopped state when the loaded clip reaches its end during playback, or by explicitly calling HapticClipPlayer.Stop(). When calling HapticClipPlayer.Play(Controller) the player enters a playing state. A HapticClipPlayer in the playing state can enter a paused state by calling HapticClipPlayer.Pause(). Playback can be unpaused (i.e. playing) from the current paused playback position by calling HapticClipPlayer.Play(Controller) or HapticClipPlayer.Resume(). Calling HapticClipPlayer.Resume() on a playing player has no effect. Calling HapticClipPlayer.Play(Controller) on a playing player makes it play again from the start.
HapticClipPlayer可以处于停止、播放或暂停状态。默认情况下, HapticClipPlayer处于停止状态。当加载的剪辑在播放期间到达结尾时,或者通过明确调用HapticClipPlayer.Stop() ,播放器将返回到停止状态。调用HapticClipPlayer.Play(Controller)时,播放器进入播放状态。处于播放状态的HapticClipPlayer可以通过调用HapticClipPlayer.Pause()进入暂停状态。通过调用HapticClipPlayer.Play(Controller)或HapticClipPlayer.Resume() ,可以从当前暂停的播放位置取消暂停(即播放)。在正在播放的播放器上调用HapticClipPlayer.Resume()没有任何效果。在正在播放的播放器上调用HapticClipPlayer.Play(Controller)会使其从头开始再次播放。The rendered amplitude and frequency can be modulated during runtime using the HapticClipPlayer.amplitude and HapticClipPlayer.frequencyShift properties respectively. You can also loop a clip using the HapticClipPlayer.isLooping property.
渲染的振幅和频率可在运行时分别使用HapticClipPlayer.amplitude和HapticClipPlayer.frequencyShift属性进行调制。您还可以使用HapticClipPlayer.isLooping属性循环播放剪辑。It is possible to release HapticClipPlayer objects as needed to free up memory using the HapticClipPlayer.Dispose() method. Of course, calling any method on a released HapticClipPlayer will cause a runtime error.
可以根据需要使用HapticClipPlayer.Dispose()方法释放HapticClipPlayer对象以释放内存。当然,在已释放的HapticClipPlayer上调用任何方法都会导致运行时错误。
相关文章:
【Quest开发】手柄交互震动
软件:Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72(要提前导入哦) 硬件:Meta Quest3 参考Meta开发文档:https://developers.meta.com/horizon/documentation/unity/unity-haptics-sdk-integrate 这篇官…...
《Transformer如何进行图像分类:从新手到入门》
引言 如果你对人工智能(AI)或深度学习(Deep Learning)感兴趣,可能听说过“Transformer”这个词。它最初在自然语言处理(NLP)领域大放异彩,比如在翻译、聊天机器人和文本生成中表现出…...
数字图像处理与Python语言实现-Box模糊CUDA实现
Box模糊CUDA实现 文章目录 Box模糊CUDA实现1、Box模糊的基本原理2、算法优化:滑动窗口技术3、参数对模糊效果的影响4、Box模糊的优缺点5、与高斯模糊的对比6、实际应用场景7、算法实现7.1 PyCUDA实现7.2 CuPy实现7.3 C++与CUDA实现8、总结在图像处理领域,**Box模糊(方框模糊…...
MAVEN解决版本依赖冲突
文章目录 一、依赖冲突概念1、什么是依赖冲突2、依赖冲突的原因3、如何解决依赖冲突 二、查看依赖冲突-maven-helper1、安装2、helper使用1、conflicts的阅读顺序(从下向上看)2、dependencies as List的阅读顺序(从下向上看)3、de…...
Compose 实践与探索五 —— AnimationSpec
不论是 animateXxxAsState() 还是 Animatable 的 animateTo() 都可以传入 AnimationSpec 以配置动画的规格: Composable fun animateDpAsState(targetValue: Dp,animationSpec: AnimationSpec<Dp> dpDefaultSpring,label: String "DpAnimation",…...
Embedding模型到底是什么?
嵌入模型(Embedding Model)是一种将高维数据映射到低维空间的工具,广泛应用于自然语言处理(NLP)、推荐系统和图像识别等领域。它的核心目标是将复杂的数据(如文本、图像或用户行为)转换为稠密的…...
数据结构(一)——绪论
一、数据结构的研究内容 1.数据的各种逻辑结构和物理结构,以及他们之间的相应关系 2.存储结构的方法,对每种结构定义相适应的各种运算 3.设计出相应的算法 4.分析算法的效率 二、数据结构的基本概念 1.数据(data):…...
VMware虚拟机网络连接模式介绍以及nat模式访问公网实践
在 VMware 虚拟机中,网络配置是非常重要的一部分。VMware 提供了三种主要的网络连接模式,分别是桥接模式(Bridged)、NAT模式(NAT) 和仅主机模式(Host-Only)。每种模式都有其特定的用…...
Selenium Manager和webdriver manager的区别与联系
一、引言 1.1 自动化测试的重要性 在现代软件开发流程中,自动化测试已经成为保证软件质量和提高交付效率的关键实践。随着软件开发周期的缩短和软件复杂性的增加,手工测试已无法满足快速迭代的需求。自动化测试能够快速、准确地执行重复性测试任务&…...
八叉树地图的原理与实现
八叉树与体素图 八叉树地图 八叉树地图是可变分辨率的三维栅格地图,可以自由调整分辨率,如下所示: 根据点云的数量或密度决定每个叶子方块是否被占据 体素图 体素就是固定分辨率的三维栅格地图,如下所示: 根据点云…...
DeepSeek模型本地化部署方案及Python实现
DeepSeek实在是太火了,虽然经过扩容和调整,但反应依旧不稳定,甚至小圆圈转半天最后却提示“服务器繁忙,请稍后再试。” 故此,本文通过讲解在本地部署 DeepSeek并配合python代码实现,让你零成本搭建自己的AI…...
【Linux】浅谈冯诺依曼和进程
一、冯诺依曼体系结构 冯诺依曼由 输入设备、输出设备、运算器、控制器、存储器 五部分组成。 冯诺依曼的设计特点 二进制表示 所有数据(包括程序指令)均以二进制形式存储和运算,简化了硬件逻辑设计,提高了可靠性。 存储程序原理…...
基于深度学习的多模态人脸情绪识别研究与实现(视频+图像+语音)
这是一个结合图像和音频的情绪识别系统,从架构、数据准备、模型实现、训练等。包括数据收集、预处理、模型训练、融合方法、部署优化等全流程。确定完整系统的组成部分:数据收集与处理、模型设计与训练、多模态融合、系统集成、部署优化、用户界面等。详…...
【蓝桥杯】第15届c++B组--R格式
问题描述 小蓝最近在研究一种浮点数的表示方法:RR 格式。对于一个大于 0 的浮点数 dd,可以用 RR 格式的整数来表示。给定一个转换参数 nn,将浮点数转换为 RR 格式整数的做法是: 将浮点数乘以 2n2n; 四舍五入到最接近的整数。 …...
【初阶三】认识C语言—下
【初阶三】认识C语言—下 1.函数2.数组3.操作符3.1算数操作符3.2移位操作符和位操作符3.3赋值操作符3.4单目操作符 4.常见关键字4.1关键字typedef4.2 关键字static 5. define定义常宏6.指针6.1内存6.2取地址操作符& 7.结构体 1.函数 函数就像一个工厂,通过输入原…...
【C#】使用DeepSeek帮助评估数据库性能问题,C# 使用定时任务,每隔一分钟移除一次表,再重新创建表,和往新创建的表追加5万多条记录
🌹欢迎来到《小5讲堂》🌹 🌹这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!&#…...
前端学习笔记(三)——ant-design vue表单传递数据到父页面
前言 善用AI,快速解决定位 原理 a-form所在的SFC(单文件)vue中需要将表单数据传递给父页面SFC文件中,使用emit方法 代码 子组件(Form.vue) <template><a-form submit"handleSubmit&qu…...
计算机视觉算法实战——驾驶员玩手机检测(主页有源码)
✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ 1. 领域简介:玩手机检测的重要性与技术挑战 驾驶员玩手机检测是智能交通安全领域的核心课题。根据NHTSA数据࿰…...
C语言(23)
字符串函数 11.strstr函数 1.1函数介绍: 头文件:string.h char *strstr ( const char * str1,const char *str2); 作用:在一个字符串(str1)中寻找另外一个字符串(str2)是否出现过 如果找到…...
Python入门教程:从零开始学习Python编程
引言 Python是一种高级编程语言,因其简洁的语法和强大的功能而广受欢迎。无论你是编程新手,还是有经验的开发者,Python都是一个非常好的选择。本文将带你从零开始学习Python编程,涵盖基础语法、常用库以及一些实用的编程技巧。 目…...
SAIL-RK3576核心板应用方案——无人机视觉定位与地面无人设备通信控制方案
本方案以 EFISH-RK3576-SBC工控板 或 SAIL-RK3576核心板 为核心,结合高精度视觉定位、实时通信与智能控制技术,实现无人机与地面无人设备的协同作业。方案适用于物流巡检、农业植保、应急救援等场景,具备高精度定位、低延迟通信与强环境适应性…...
14.C语言const的使用规范,详细说明
目录 修饰变量 修饰指针 指向常量的指针 常量指针 指向常量的常量指针 修饰函数参数 修饰函数返回值 总结 在 C 语言里,const 是一个类型限定符,它的作用是将变量定义为只读,也就是不允许对其值进行修改,用来修饰函数中的…...
安装操作系统ubuntu-20.04.6-live-server-amd64
一、下载虚拟机软件、远程控制软件及操作系统镜像 下载VMware Workstation: 下载 VMware Workstation Pro 个人免费版(可能会访问不了,那就随便找个能下载的版本安装)下载XShell: XShell 家庭/学校免费版下载ubuntu操作系统 ubuntu-20.04.6-…...
使用 PaddleNLP 在 CPU(支持 AVX 指令)下跑通 llama2-7b或DeepSeek-r1:1.5b 模型(完成度80%)
原文:🚣♂️ 使用 PaddleNLP 在 CPU(支持 AVX 指令)下跑通 llama2-7b 模型 🚣 — PaddleNLP 文档 使用 PaddleNLP 在 CPU(支持 AVX 指令)下跑通 llama2-7b 模型 🚣 PaddleNLP 在支持 AVX 指令的 CPU 上对 llama 系列模型进行了…...
【Golang】第五弹----函数
笔上得来终觉浅,绝知此事要躬行 🔥 个人主页:星云爱编程 🔥 所属专栏:Golang 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 一、函数 1.1基本介绍…...
适合二次开发的Web组态软件推荐
在选择适合二次开发的Web组态软件时,需要考虑多个因素,包括开源与否、功能、社区支持、文档完整性等。以下是一些适合二次开发的Web组态软件: 1. Node-RED 简介: Node-RED 是一个基于流的编程工具,最初由IBM开发,现为…...
三、Docker 集群管理与应用
(一)项目案例 1、准备主机 (1)关闭防火墙,或者开放TCP端口2377(用于集群管理通信)、TCP/UPD端口7946(用于节点之间的通信)、UDP端口4789(用于overlay网络流…...
Spring 注解解析
一、Import 1、核心作用 Import 是 Spring 模块化配置的核心注解,用于将外部配置类、组件或动态逻辑导入当前 Spring 上下文。其核心功能包括: 配置类聚合:整合多个分散的 Configuration 类,解决大型项目中配置分散的问题。动态…...
DeepSeek-R1思路训练多模态大模型-Vision-R1开源及实现方法思路
刚开始琢磨使用DeepSeek-R1风格训练多模态R1模型,就看到这个工作,本文一起看看,供参考。 先提出问题,仅靠 RL 是否足以激励 MLLM 的推理能力? 结论:不能,因为如果 RL 能有效激励推理能力&#…...
mysql select distinct 和 group by 哪个效率高
在有索引的情况下,SELECT DISTINCT和GROUP BY的效率相同;在没有索引的情况下,SELECT DISTINCT的效率高于GROUP BY。这是因为SELECT DISTINCT和GROUP BY都会进行分组操作,但GROUP BY可能会进行排序,触发filesort&…...
阿里云操作系统控制台评测:国产AI+运维 一站式运维管理平台
阿里云操作系统控制台评测:国产AI运维 一站式运维管理平台 引言 随着云计算技术的飞速发展,企业在云端的运维管理面临更高的要求。阿里云操作系统控制台作为一款集运维管理、智能助手和系统诊断等多功能于一体的工具,正逐步成为企业高效管理…...
Linux基础开发工具—vim
目录 1、vim的概念 2、vim的常见模式 2.1 演示切换vim模式 3、vim命令模式常用操作 3.1 移动光标 3.2 删除文字 3.3 复制 3.4 替换 4、vim底行模式常用命令 4.1 查找字符 5、vim的配置文件 1、vim的概念 Vim全称是Vi IMproved,即说明它是Vi编辑器的增强…...
11 应用层的域名知识点
一、DNS 1、理解 定义:DNS(Domain Name System,域名系统)是互联网的一项核心服务,它将人类可读的域名(也叫网址,如 www.example.com)转换为机器可读的IP地址(如 192.0.…...
5-24 色彩与风格——T2IA自适应
前言: 上一节我们介绍了ControlNet中的inpaint局部重绘 主要介绍ControlNet中的T2IA自适应。 色彩风格的参考和借鉴能力,有点类似于5-17 reference参考图 或者 5-16 画面风格迁移-shuffle洗牌 。当然在硬件的要求,软件的算法实现和使用方式…...
JAVA-Thread类实现多线程
引言: 本章博客涉及进程线程内容,如果不了解的可以看:什么是进程线程-CSDN博客 线程是操作系统的概念,操作系统提供的API供程序员使用操作。但是不同的操作系统(Winodws、Linux、Unix……差别很大),但是做为JAVA程序员就不需要担心…...
顺序表,单链表,双链表,循环链表(01星球)
文章目录 数据结构前导------C语言复习程序为什么要被编译器编译之后才能运行编译器把C语言程序转换成可以执行的机器码的过程做了什么宏定义typedef 关键字全局变量和局部变量常量字符的输入输出运算符冯诺依曼架构存储器容量数据类型指针指针本质为什么需要指针 数组数组指针…...
代码社区开源协议
开源协议是一种法律文件,用于规定开源软件的使用、修改和分发条件。它平衡了开发者和使用者的权益,同时推动开放协作与技术创新。以下是常见的开源协议及其特点和适用场景: 常见开源协议列表及介绍 1. MIT License 特点:非常宽…...
[免费]微信小程序(图书馆)自习室座位预约管理系统(SpringBoot后端+Vue管理端)(高级版)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序(图书馆)自习室座位预约管理系统(SpringBoot后端Vue管理端)(高级版),分享下哈。 项目视频演示 【免费】微信小程序(图书馆)自习室座位预约管理系统(SpringBoot后端Vue管理端)(高级版…...
树莓派:更新源
发行版本 Debian 一直维护着至少三个发行版本:“稳定版(stable)”,“测试版(testing)”和“不稳定版(unstable)”。 发行版目录 下一代 Debian 正式发行版的代号为 bullseye — 发布…...
树与二叉树的遍历
我们平时用的树都是二叉树 一、一些基础概念 1. 树就是一种:一对多的数据结构。树离不开递归,因为“树”就是“树”中有“树”。 二叉树就是 :空树 或者 每个结点的子结点个数小于等于2。 满二叉树: 除叶子结点外所有结点的…...
Web基础:HTML快速入门
HTML基础语法 HTML(超文本标记语言) 是用于创建网页内容的 标记语言,通过定义页面的 结构和内容 来告诉浏览器如何呈现网页。 超文本(Hypertext) 是一种通过 链接(Hyperlinks) 将不同文本、图像…...
异常(8)
今天补充一些异常的细节,帮助大家更好的理解异常. 注:关于异常的处理方式 异常的种类有很多,我们要根据不同的业务场景来决定. 对于比较严重的问题(例如和算钱相关的场景),应该让程序直接崩溃,防止造成更严重的结果 对于不太严重的问题(大多数场景),可以记录错误日志,并通过…...
平时作业
java作业 package zuoye; public class zuoye02 {public static int Random(int n) {return (int)(n * Math.random());}public static void main(String[] args) {int n 100;//System.out.println(Random(n));int[]random new int[50];for(int i 0; i <50; i) {rand…...
宇树人形机器人开源模型
1. 下载源码 https://github.com/unitreerobotics/unitree_ros.git2. 启动Gazebo roslaunch h1_description gazebo.launch3. 仿真效果 H1 GO2 B2 Laikago Z1 4. VMware: vmw_ioctl_command error Invalid argument 这个错误通常出现在虚拟机环境中运行需要OpenGL支持的应用…...
**ResNet-SE + MFCC** 训练框架,包括 **数据加载、训练流程**,以及 **混淆矩阵** 可视化示例
1. 依赖库安装 如果你还没安装相关库,请先执行: pip install torch torchaudio torchvision scikit-learn matplotlib tqdm2. 数据加载 这里假设你有一个 音频分类数据集,其文件结构如下: dataset/ │── train/ │ ├──…...
Golang | 每日一练 (5)
💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 Golang | 每日一练 (5)题目参考答案线程与协程线程切换…...
搞定python之四----函数、lambda和模块
本文是《搞定python》系列专栏的第四篇,通过代码演示列python自定义函数、lambda和模块的用法。本文学习完成后,python的基础知识就完了。后面会学习面向对象的内容。 1、自定义函数 # 测试python自定义函数# 有参数,没有返回值 def say_he…...
算法分享———进制转换通用算法
模板一:任意(K)进制转10进制 将k进制的x转化为10进制的x ll x0; for(int i1;i<n;i) { xx*ka[i]; } cout<<x<<endl;模板二:十进制转m进制 ll x; cin>>x; while(x) { a[cnt]x%k; x/k; } reverse(a1,a1cnt);…...
Proser:新增指令批次发送功能
Proser中的批次发送功能,是通过指令集进行管理的。 起初设计时,希望指令集窗口自身包含指令的编辑功能,这部分功能与传输窗口的功能重合度高,所以设计上进行了简化,由用户在传输窗口输入指令,添加到指令集窗…...
rpc grpc
RPC Remote Procedure Call,远程过程调用,是用来屏蔽分布式计算中的各种调用细节,使得调用远端的方法就像调用本地的一样。 客户端与服务端沟通的过程 客户端发送数据(以字节流的方式);(编码)服务端接受…...