MATLAB:解包函数

2024-04-28

我正在与 Mathworks 的某人讨论:unwrap http://www.mathworks.com/access/helpdesk/help/techdoc/ref/unwrap.html函数中对于 π 以外的跳跃容差有一个“bug”,并且希望获得一些其他观点:

描述

Q = unwrap(P)当 P 的连续元素之间的绝对跳跃大于或等于 π 弧度的默认跳跃容差时,通过添加 ±2π 的倍数来校正向量 P 中的弧度相位角。如果 P 是矩阵,则 unwrap 按列进行运算。如果 P 是多维数组,则 unwrap 对第一个非单维进行操作。

Q = unwrap(P,tol)使用跳跃容差 tol 代替默认值 π。

该文档有两种可能的解释:

  1. Q = unwrap(P,tol)当 P 的连续元素之间的绝对跳跃大于或等于 tol 弧度时,通过添加 ±2π 的倍数来校正向量 P 中的弧度相位角。如果 P 是矩阵,则 unwrap 按列进行运算。如果 P 是多维数组,则 unwrap 对第一个非单维进行操作。

    Example:

    >> x = mod(0:20:200,100); unwrap(x, 50)
    ans =
        0 20.0000 40.0000 60.0000 80.0000 81.6814 101.6814 121.6814 141.6814 161.6814 163.3628
    
  2. Q = unwrap(P,tol)当 P 的连续元素之间的绝对跳跃大于或等于 tol 时,通过添加 ±2*tol 的倍数来校正向量 P 中的元素。如果 P 是矩阵,则 unwrap 按列进行运算。如果 P 是多维数组,则 unwrap 对第一个非单维进行操作。

    Example:

    >> x = mod(0:20:200,100); unwrap(x, 50)  
    ans =  
        0    20    40    60    80   100   120   140   160   180   200
    

的实际行为unwrap()在 MATLAB 中(至少到 R2010a)是#1。我的解读unwrap()是它应该是#2,因此行为中存在错误。如果unwrap()的行为与 #2 匹配,那么 unwrap 可以用作缓慢变化输入的 mod 的逆函数,即unwrap(mod(x,T),T/2) = x对于向量 x,其中连续元素的变化小于 tol=T/2。

请注意,第二种解释比角度更通用,并且可以用环绕周期 T 展开任何内容。(无论默认值 T=2π(弧度)、360(度数)、256(8 位数字)、65536(16 位数字), ETC。)

所以我的问题是:

行为 #1 有可能的用途吗?哪种解释更有意义?


解释 #1 是我阅读文档的方式,我认为这是有道理的。我可以想象用它来重建车轮编码器的驱动距离。对于慢速,容差并不重要,但对于高速(足够高以违反采样定理,即车轮每次旋转的样本少于两个),如果您知道方向,容差可以帮助您获得正确的重建。

#1 更有意义的另一个原因可能是普通的展开可以轻松扩展到通用展开,因此不需要直接将句点作为参数。

% example for 16 bit integers
>> x1 = [10 5 0 65535 65525];
T = 65536;
x2 = T * unwrap(x1 * 2 * pi / T) / (2 * pi)
x2 =
     10.0000    5.0000         0   -1.0000  -11.0000

或者只是创建自己的函数:

function ret = generic_unwrap(x, T)
  ret = T * unwrap(x * 2 * pi / T) / (2 * pi);
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MATLAB:解包函数 的相关文章

  • 从彩色背景中提取黑色对象

    人眼很容易辨别black来自其他颜色 但是计算机呢 我在普通的A4纸上打印了一些色块 由于组成彩色图像有青色 品红色和黄色三种墨水 所以我设置每个块的颜色C 20 C 30 C 40 C 50 以及其余两种颜色是 0 这是我的源图像的第一列
  • 我的 matlab 图中需要不同的颜色

    这是我的情节代码 问题是我的图中的两条线具有相同的颜色 我需要为图中的每条线 总共 4 条线 分配一个特殊的颜色 for i 1 nFolderContents data hdrload folderContents i if size f
  • Matlab 中二维插值的函数形式

    我需要从二维数据数组构造一个插值函数 我需要返回实际函数的东西的原因是 我需要能够将函数作为我需要进行数值积分的表达式的一部分进行计算 因此 interp2 并没有解决这个问题 它不返回函数 我可以使用 TriScatteredInterp
  • 在 MATLAB 中高效地形成动态窗口

    有人可以帮助我提供一种有效的方法 或者帮助我执行提供的代码 以尽可能少的步骤获得相同的结果 我将感激你 我有一个原始数组 A 1 1 1 4 3 4 5 4 4 3 3 1 0 0 2 6 2 6 3 6 6 2 7 4 8 7 2 2 2
  • 使用 lsqcurvefit 进行拟合

    我想将一些数据拟合到洛伦兹函数 但当我使用不同数量级的参数时 我发现拟合存在问题 这是我的洛伦兹函数 function value lorentz x x0 gamma amp value amp gamma 2 x x0 2 gamma
  • 带 if 语句的可向量化 FIND 函数 MATLAB

    我有一个矩阵u 我想遍历所有行和所有列并执行以下操作 如果元素非零 我返回行索引的值 如果元素为零 则查找该元素之后的下一个非零元素的行索引 我可以使用两个带有 find 函数的 for 循环轻松完成此操作 但我需要多次执行此操作 不是因为
  • MATLAB 链表

    有哪些可能的方法来实现链表MATLAB http en wikipedia org wiki MATLAB 注意 我问这个问题是为了教学价值 而不是实用价值 我意识到 如果您实际上在 MATLAB 中滚动自己的链表 那么您可能做错了什么 然
  • 将输出从符号数学 (sym) 转换为浮点型

    我的问题类似于这个问题 https stackoverflow com questions 11114101 how to convert mupad symbol i sqrt 1 to i in matlab 11114959 1111
  • Matlab 的快速 JSON 解析器

    您知道 Matlab 中有一个非常快速的 JSON 解析器吗 目前我正在使用JSONlab http www mathworks com matlabcentral fileexchange 33381 jsonlab a toolbox
  • 图像增强 - 从书写中清除给定图像

    我需要清理这张照片 删除 清理我 的字样并使其变亮 作为图像处理课程作业的一部分 我可能会使用 matlab 函数 ginput 来查找图像中的特定点 当然 在脚本中您应该对所需的坐标进行硬编码 您可以使用 conv2 fft2 ifft2
  • 如何在 R 或 MATLAB 中为散点图创建阴影误差条“框”

    我想在 R 或 MATLAB 中创建一个简单的散点图 涉及两个变量 x 和 y 它们有与之相关的错误 epsilon x 和 epsilon y 然而 我不是添加误差线 而是希望在每个 x y 对周围创建一个 阴影框 其中框的高度范围从 y
  • 使用 python 在网络上部署 matlab 应用程序

    您好 我想使用 python 在网络上部署 matlab 应用程序 有没有办法做到这一点 我已按照数学工作网站上的文档将我的应用程序转换为 jar 文件 java 类 有人能指出我前进的正确方向吗 事实上 您的 Matlab 代码打包为 J
  • Microsoft Visual C++ 2008 和 R2007b 的 Mex 类型

    我想对 vs2008 和 matlab2007b 使用 mex 类型 我尝试了下面的代码 include
  • 查找数组中元素之间的平均差异的有效方法

    希望标题不会让人困惑 通过例子来展示很简单 我有一个像这样的行向量 1 5 6 我想找到每个元素之间的平均差异 此示例中的差异为 4 和 1 因此平均值为 2 5 这是一个小例子 我的行向量可能非常大 我是 MatLab 新手 那么有没有一
  • 将 3d 矩阵重塑为 2d 矩阵

    我有一个 3d 矩阵 n by m by t 在 MATLAB 中表示n by m一段时间内网格中的测量值 我想要一个二维矩阵 其中空间信息消失了 只有n m随着时间的推移测量t剩下 即 n m by t 我怎样才能做到这一点 你需要命令r
  • opencv中矩阵的超快中值(与matlab一样快)

    我正在 openCV 中编写一些代码 想要找到一个非常大的矩阵数组 单通道灰度 浮点数 的中值 我尝试了几种方法 例如对数组进行排序 使用 std sort 和选择中间条目 但与 matlab 中的中值函数相比 它非常慢 准确地说 在 ma
  • 将组合字符串和数字输入的元胞数组写入文本文件

    考虑以下 DateTime 2007 01 01 00 00 2007 02 01 00 00 2007 03 01 00 00 Headers Datetime Data Dat 100 200 300 Data DateTime num
  • 在 MATLAB 中用两个值替换向量值

    我必须创建一个以向量作为输入的函数v和三个标量a b and c 该函数替换了的每个元素v等于a有一个二元素数组 b c 例如 给定v 1 2 3 4 and a 2 b 5 c 5 输出将是 out 1 5 5 3 4 我的第一次尝试是尝
  • 通过傅里叶空间填充进行插值

    我最近尝试在 matlab 上实现一个在傅立叶域中使用零填充的插值方法的简单示例 但我无法正常工作 我总是有一个小的频移 在傅里叶空间中几乎不可见 但它在时空上产生了巨大的误差 由于傅里叶空间中的零填充似乎是一种常见 且快速 的插值方法 因
  • 作为动画的八度情节点

    我有以下八度脚本 TOTAL POINTS 100 figure 1 for i 1 TOTAL POINTS randX rand 1 randY rand 1 scatter randX randY hold on endfor 当我运

随机推荐