免费建电子商务网站/相城seo网站优化软件

免费建电子商务网站,相城seo网站优化软件,建筑招工找活平台,网站建设服务公在雷达仿真过程中,运动仿真的必要性,以及运动仿真可以实现哪些功能,在matlab对应的user guide中已经讲的很清楚了,这里不再赘述。 本文主要介绍phased.Platform的一些“坑”,和典型的用法。 第一坑:系统对…

在雷达仿真过程中,运动仿真的必要性,以及运动仿真可以实现哪些功能,在matlab对应的user guide中已经讲的很清楚了,这里不再赘述。

本文主要介绍phased.Platform的一些“坑”,和典型的用法。

第一坑:系统对象机制

系统对象(system object)在调用的时候,返回当前的状态值,并计算下一状态值存储在系统对象中,直到调用release函数复位。假如仿真的时间步长为T,第一次调用系统对象返回零时刻的状态值。如果我们想要知道nT时刻的返回值,则需要调用系统对象函数n+1次。

第二坑:InitialVelocity属性

帮助文档是这么描述该属性

![[file-20250324223332955.png]]

红框中说:当MotionModel设置为VelocityVelocitySource设置为Input port的时候,InitialVelocity起作用。但是问题来了,当VelocitySource设置为Input port的时候,系统对象调用的形式必须满足[Pos,Vel] = platform(T,V),那么在调用的时候必须还要输入V参数,可以推断,第一次调用系统对象时,返回的Vel值应该是Initialvelocity,而输入参数V则是为了更新下一次数据使用。更新原则为:Pos = Pos + T*VVel = V

验证代码如下:

clear;clc;v0 = [1, 2, 3]';
v1 = [2, 3, 4]';
v2 = [3, 4, 5]';rdPlatform = phased.Platform();
rdPlatform.MotionModel = 'Velocity';
rdPlatform.InitialPosition = [0;0;0];
rdPlatform.VelocitySource = 'Input port';
rdPlatform.InitialVelocity = v0;T = 1;% 输出pos=initialPosition=[0,0,0],vel=[1,2,3],
% 更新vel = [2,3,4]
% 更新pos = initialPosition + T*v1 =[2,3,4]
[pos, vel] = rdPlatform(T, v1)% 输出pos = [2,3,4]和vel=[2,3,4]
% 更新vel = [3,4,5]
% 更新pos=[2,3,4]+[3,4,5]=[5,7,9]
[pos, vel] = rdPlatform(T, v2)% 输出pos = [5,7,9]和vel=[1,2,3]
% 更新vel = [1,2,3]
% 更新pos=[5,7,9]+[1,2,3]=[6,9,12]
[pos, vel] = rdPlatform(T, v0)

第三坑:Velocity属性

每次调用函数的时候,都不需要更新velocity,这是最基本的用法。

![[file-20250323211714998.png]]

由于velocity这个属性tunable,所以在仿真过程中可以更新velocity的值,。

clear;clc;rdPlatform = phased.Platform();
rdPlatform.MotionModel = 'Velocity';
rdPlatform.InitialPosition = [0;0;0];
rdPlatform.VelocitySource = 'Property';
rdPlatform.Velocity = [10;20;-10];T = 1;[pos, vel] = rdPlatform(T)
rdPlatform.Velocity = [10;10;-10];
[pos, vel] = rdPlatform(T)rdPlatform.Velocity = [0;10;-10];
[pos, vel] = rdPlatform(T)

第四坑:旋转模式

旋转模式比较复杂,需要搞清楚两个问题:1)旋转什么东西?2)绕着什么旋转?

首先看旋转模式的定义:
![[file-20250324230251365.png]]

这里说,在Circulor模式下,沿着平台方向坐标系中方位指向的顺时针方向旋转,这个说法非常难懂。因此是orientation axes绕着aizmuth direction旋转。这里出现了第一个问题:orientation axes是如何定义的?azimuth direction如何定义

帮助文档中关于旋转模式的解释还出现在InitialOrientationAxes的定义中:
在这里插入图片描述
意思是orientation axes(简称oa)就是局部坐标系,这解释了第1个问题的一半疑问。紧接着第2个问题,平台有transitional和rotational的运动分量,这两种运动分量是如何影响oa的值

根据系统对象调用的规则:[Pos,Vel,Laxes] = step(___)可以返回局部坐标系,而局部坐标系Laxes定义如下:
file-20250323224914971

可以知道Laxes就是platform orientation axes,也叫platform axes,Laxes是绕着运动轨迹的方向进行旋转,这句话解释了第一个问题的后半个问题,aizmuth direction就是运动轨迹的法向量。

总结下,仿真模型中定义了平台的局部坐标系,该坐标系绕着运动轨迹的法向量旋转。这里出现了第三个问题,运动轨迹的法向量可能是随时间变化的,如何描述绕着非固定旋转轴的旋转?为了解答这个问题,我对分别只有transitional和rotational运动分量的oa变化做了研究。以下是研究过程是结论。

仅有Transitional运动分量

首先,编写代码,可视化oa和当前运动之间的关系。仿真一个平抛运动,仿真代码如下:

clear;clc;
close all;% 非零初始速度
v = [10; 10; 0];% 初始局部坐标系
initaxes = azelaxes(0, 0);% 仿真时间步长
T = 0.1% 选择加速运动模式
rdPlatform = phased.Platform(...
'MotionModel','Acceleration', ...
'InitialPosition',[0,0,0]',...
'InitialVelocity',v, ...
'AccelerationSource','Property', ...
'Acceleration',[0,0,-9.8]');% 选择非旋转模式
% 初始的局部坐标系设置为initaxes;
rdPlatform.ScanMode = 'None';
rdPlatform.InitialOrientationAxes = initaxes;
rdPlatform.OrientationAxesOutputPort = true;% 创建绘图窗口
figure;
ha = axes("Parent", gcf);
hold(ha, 'on');
xlabel('x')
ylabel('y')
zlabel('z')% 循环仿真
for i = 1:50 [pos, vel, lax] = rdPlatform(T);xaxes(vel)*transpose(xaxes(v))*initaxeslaxpltax(ha, pos, vel, lax);
endaxis(ha, 'equal')

仿真结果如下:

![[相控阵工具箱/assets/运动仿真——phased.Platform/file-20250325093656820.png]]

可以看出,oa随着速度矢量的变化而变化。假如每一时刻的速度矢量为 v i v_i vi,由速度矢量确定的坐标系(我自己写一个函数,来确定平台局部坐标系,该函数根据 x x x轴来确定局部坐标系,因此叫xaxes)为 P i P_i Pi,那么 P i P_i Pi可以由 P 1 P_1 P1通过线性变换 T i T_i Ti得到,写作

P i = T i × P 1 P_i=T_i\times P_1 Pi=Ti×P1

由此可以得到线性变换为 T i = P i × P 1 T T_i=P_i\times P_1^T Ti=Pi×P1T,假设平台没有旋转运动,那么平台初始局部坐标系为 L 1 L_1 L1,第 i i i时刻的局部坐标系 L i L_i Li就是 L i = T i × L 1 = P i × P 1 T × L 1 L_i=T_i\times L_1=P_i\times P_1^T\times L_1 Li=Ti×L1=Pi×P1T×L1

为了验证我的结论,可以修改上述代码的初始速度、加速度矢量为任意值,比较每一次仿真输出的局部坐标系的值和我们自己计算的局部坐标系的值是否相等。经过我的测试验证,满足结论。

仅有Rotational运动分量

在这个模式下,就很容易理解The current platform axes rotate around the normal vector to the path of the platform.。具体含义为:平台有一个和全局坐标系重合的局部坐标系,在局部坐标系中构建旋转坐标系,记为 R 1 R_1 R1。沿着方位角方向旋转角度 θ \theta θ,就是沿着z轴看向局部坐标系的原点,绕着局部坐标系的z轴,顺时针旋转。那么旋转变换可以表示为 r o t z ( − θ ) \rm{rotz}(-\theta) rotz(θ),那么加旋转的局部坐标系就是 r o t z ( − θ ) × R 1 \rm{rotz}(-\theta)\times R_1 rotz(θ)×R1

另外还有一个参数是InitialScanAngle,该参数决定了初始角度。由于我们已经定义了和全局坐标系重合局部坐标系,那么考虑初始角度 r o t z ( − θ ) × r o t z ( i n i t A n g ) × R 1 \rm{rotz}(-\theta)\times \rm{rotz}(initAng)\times R_1 rotz(θ)×rotz(initAng)×R1

用代码实现如下:

clear;clc;close all;% 初始速度为零
v = [0; 0; 0];T = 1;% 初始orientation axes
initOA = azelaxes(0, 10);% 初始旋转角度
initAng = 90;% 扫描速度为10deg/sec
scanrate = 45;% 无加速度
rdPlatform = phased.Platform(...
'MotionModel','Acceleration', ...
'InitialPosition',[0,0,0]',...
'InitialVelocity',v, ...
'AccelerationSource','Property', ...
'Acceleration',[0, 0, 0]');% 圆周扫描,初始扫描角度为45deg。
rdPlatform.ScanMode = 'Circular';
rdPlatform.InitialScanAngle = initAng;
rdPlatform.AzimuthScanRate = scanrate;
rdPlatform.InitialOrientationAxes = initOA;
rdPlatform.OrientationAxesOutputPort = true;figure;
ha = axes("Parent", gcf);
hold(ha, 'on');
xlabel('x')
ylabel('y')
zlabel('z')for i = 1:3[pos, vel, lax] = rdPlatform(T);rotz(-scanrate*(i-1)*T) * rotz(initAng) * initOAlaxpltax(ha, pos, vel, lax);
endaxis(ha, 'equal')

仿真结果如下,可以看出仿真结果和我的猜想一致。

在这里插入图片描述

含有Transitional和Rotational运动分量

包含平动和转动的运动状态,该状态下返回的Laxes值目前机理还不清楚,待讨论。

附件

function lax = xaxes(x)x = x / norm(x);
% define vector v in x-y plane of global coordinate system
v = [0; 0; 1];
% compute y;
y = cross(v, x);
y = y / norm(y);
% compute z;
z = cross(x, y);
% construct local axes;
lax = [x, y, z];
end
function pltax(ha, pos, vel, ax)vel = vel / norm(vel);
scatter3(ha, pos(1), pos(2), pos(3), 'k');
quiver3(ha, pos(1), pos(2), pos(3), vel(1), vel(2), vel(3), 'k', 'MaxHeadSize', 2, 'AutoScale', 'off');
quiver3(ha, pos(1), pos(2), pos(3), ax(1, 1), ax(2, 1), ax(3, 1), 'b', 'MaxHeadSize', 2, 'AutoScale', 'off');
quiver3(ha, pos(1), pos(2), pos(3), ax(1, 2), ax(2, 2), ax(3, 2), 'r', 'MaxHeadSize', 2, 'AutoScale', 'off');
quiver3(ha, pos(1), pos(2), pos(3), ax(1, 3), ax(2, 3), ax(3, 3), 'r', 'MaxHeadSize', 2, 'AutoScale', 'off');end

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

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

相关文章

缓存删除三级补偿方案:延迟队列+消息队列+定时任务兜底

问题背景: 在 Cache-Aside 模式中,更新数据库后删除缓存失败会导致数据不一致。本文提供工业级三级补偿方案,实现最终一致性保障。 整体架构: 更新操作触发 → 一级延迟队列 → 二级消息队列 → 三级定时任务方案实现: 一、第一级补偿:延迟队…

C++题目

1、内存管理 1.内存模型 栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。 堆:就是那些由new分配的内存块,其释放由程序员控制(一个new对应一个delete&#xff09…

天地图InfoWindow插入React自定义组件

截至2025年03月21日天地图的Marker不支持添加Label; 同时Label和Icon是不支持自定义HTMLElement只支持String;目前只有InfoWindow支持自定义HTMLElement; 效果图 React核心api import ReactDOM from react-dom/client const content document.createElement(div);…

【STM32】第一个工程的创建

目录 1、获取 KEIL5 安装包2、开始安装 KEIL52.1、 激活2.2、安装DFP库 3、工程创建4、搭建框架5、开始编写代码 1、获取 KEIL5 安装包 要想获得 KEIL5 的安装包,在百度里面搜索“KEIL5 下载”即可找到很多网友提供的下载文件,或者到 KEIL 的官网下载&a…

1、mysql基础篇--概述

关系型数据库(RDBMS) 概念特点:数据模型: 概念 建立在关系模型基础上,有多张表相互连接的二维表组成的数据库 特点: 1、使用表存储,格式统一,便于维护 2、使用sql语言操作&#…

【多线程】synchronized底层实现的方式

前言 在java 开发中对于锁的应用非常的常见,如果对于什么时候该用什么锁,以及锁实现的原理有所不知道的,或者面试过程中面试官问你不知道怎么回答的,欢迎来看下面的文章 1、synchronized和ReentrantLock的区别 2、synchronized的…

Pytorch中Tensorboard的学习

1、Tensorboard介绍 TensorBoard 是 TensorFlow 开发的一个可视化工具,用于帮助用户理解和调试机器学习模型的训练过程。尽管它最初是为 TensorFlow 设计的,但通过 PyTorch 的 torch.utils.tensorboard 模块,PyTorch 用户也可以方便地使用 Te…

数据结构篇:空间复杂度和时间复杂度

目录 1.前言: 1.1 学习感悟 1.2 数据结构的学习之路(初阶) 2.什么是数据结构和算法 2.1 数据结构和算法的关系 2.2 算法的重要性 2.3 如何衡量算法的好坏 3.时间复杂度 3.1 时间复杂度的概念 3.2 大O的渐进表示法 O() 4.空间复杂度 5. 常见的时间复杂度和…

泰坦军团携手顺网旗下电竞连锁品牌树呆熊 共创电竞新纪元

在电竞行业的浪潮中,品牌之间的战略合作愈发成为推动市场前行的重要动力。最近,电竞显示器领域领军品牌泰坦军团高层领导出席顺网旗下电竞连锁品牌树呆熊十周年盛典。会议现场,双方高层领导宣布泰坦军团与树呆熊正式达成战略合作伙伴关系。 在…

信号的产生和保存

信号的产生 信号就是操作系统对用户操作做出的反应,但它的本质就是往操作系统写入信号,这是由操作系统的结构决定的。通过修改比特位来告诉操作系统接收信号和传了几号信号。 也正是因为我们身为用户无法亲自修改内核数据,所以我们需要通过操…

深度学习技术与应用的未来展望:从基础理论到实际实现

深度学习作为人工智能领域的核心技术之一,近年来引起了极大的关注。它不仅在学术界带来了革命性的进展,也在工业界展现出了广泛的应用前景。从图像识别到自然语言处理,再到强化学习和生成对抗网络(GAN),深度…

蓝光三维扫描技术:汽车零部件检测的精准高效之选

——汽车方向盘配件、保险杠塑料件、钣金件检测项目 汽车制造工业的蓬勃发展,离不开强大的零部件制造体系作支撑。汽车零部件作为汽车工业的基础,其设计水平、制造工艺、质量控制手段逐渐与国际标准接轨,对于零部件面差、孔位、圆角、特征线…

六十天前端强化训练之第三十天之深入解析Vue3电商项目:TechStore全栈实践(文结尾附有源代码)

欢迎来到编程星辰海的博客讲解 看完可以给一个免费的三连吗,谢谢大佬! 目录 深入解析Vue3电商项目:TechStore全栈实践 一、项目架构设计 二、核心功能实现 三、组合式API深度实践 四、性能优化实践 五、项目扩展方向 六、开发经验总结…

不同机床对螺杆支撑座的要求有哪些不同?

螺杆支撑座是机械设备中重要的支撑部件,其选择直接影响到设备的稳定性和使用寿命,尤其是在机床中,不同的机床对螺杆支撑座的要求也是不同的。 1、精度:精密测量用的基准平面和精密机床机械的检验测量设备,需要使用高精…

Federated learning client selection algorithm based on gradient similarity阅读

基于梯度相似性的联邦学习客户端选择算法 Abstract 摘要introduction**背景****目的****结论****结果****讨论****思路** 链接:https://link.springer.com/article/10.1007/s10586-024-04846-0 三区 Abstract 摘要 联邦学习(FL)是一种创新的…

航天军工与金融行业 UE/UI 设计:跨越领域的体验革新之道

在数字化时代,用户体验(UE)和用户界面(UI)设计成为众多行业提升竞争力的关键因素。航天军工与金融行业虽业务性质差异巨大,但在 UE/UI 设计方面却面临着一些相似挑战,同时也在各自的探索中展现出…

【Git】--- 分支管理

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: Git 本篇博客我们来介绍Git的一个重要功能之一 ---- 分支。我们将讲解关于分支的各种操作,以及如何帮助我们进行开发。 🏠 理解分支…

Vue3前端开发:组件化设计与状态管理

Vue3前端开发:组件化设计与状态管理 一、Vue3组件化设计 组件基本概念与特点 是一款流行的JavaScript框架,它支持组件化设计,这意味着我们可以将页面分解成多个独立的组件,每个组件负责一部分功能,通过组件的嵌套和复用…

动手学深度学习11.9. Adadelta-笔记练习(PyTorch)

以下内容为结合李沐老师的课程和教材补充的学习笔记,以及对课后练习的一些思考,自留回顾,也供同学之人交流参考。 本节课程地址:72 优化算法【动手学深度学习v2】_哔哩哔哩_bilibili 本节教材地址:11.9. Adadelta —…

Android Audio基础(13)——audiomixer

在 Android 平台上,音频混合器 AudioMixer 主要用在 AudioFlinger 里,将多路音频源数据混音(包括混音、音量处理、重采样及处理声道等)。位于 framework 的音频处理模库 libaudioprocessing(frameworks/av/media/libau…