MATLAB 中的循环缓冲区,**无需**复制旧数据

2023-12-11

这里有一些很好的帖子(例如this one)了解如何在 MATLAB 中创建循环缓冲区。然而,从观察它们来看,我认为它们不适合我的应用程序,因为我正在寻找的是 MATLAB 中的循环缓冲区解决方案,它不涉及任何旧数据的复制。

举一个简单的例子,假设我一次处理 50 个样本,每次迭代读取 10 个样本。我将首先运行 5 次迭代,填充缓冲区,最后处理 50 个样本。所以我的缓冲区将是

[B1 B2 B3 B4 B5]

,其中每个“B”是 10 个样本的块。

现在,我读入接下来的 10 个样本,将它们称为 B6。我希望我的缓冲区现在看起来像:

[B2 B3 B4 B5 B6]

问题是 - 我不想每次都复制旧数据 B2、B3、B4、B5,因为它会在时间上变得昂贵。 (我有非常大的数据集)。

我想知道是否有一种方法可以在不复制“旧”数据的情况下执行此操作。谢谢。


快速实现循环缓冲区的一种方法是使用模数从回绕到前面。这将稍微修改您指定的数据顺序,但如果您只是用最新数据替换最旧的数据,而不是使用最新的数据,则可能会更快且等效

[B2 B3 B4 B5 B6]

You get

[B6 B2 B3 B4 B5]

通过使用这样的代码:

bufferSize = 5;

data = nan(bufferSize,1)';

for ind = 1:bufferSize+2  

    data(mod(ind-1, bufferSize)+1) = ind

end

这适用于任意大小的数据。

如果您不熟悉模数,mod函数有效地返回除法运算的余数。所以mod(3,5) returns3, mod(6,5)回报1, mod(7,5)回报2依此类推,直到达到mod(10,5)又等于 0。这使我们能够通过每次到达终点时移回起点来“环绕”向量。这+1 and -1代码中的原因是因为 MATLAB 从 1 而不是 0 开始其向量索引,因此为了正确计算数学结果,您必须在执行以下操作之前删除 1mod然后将其添加回来以获得正确的索引。结果是,当您尝试将第六个元素写入向量时,会将其写入向量中的第一个位置。

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

MATLAB 中的循环缓冲区,**无需**复制旧数据 的相关文章

  • Matlab - 如果值包含xxx,则删除元胞数组中的行

    在 Matlab 中 如何删除包含变量字符串的元胞数组中的元胞 假设我的元胞数组是 C svnTrunk RadarLib radarlb utilities scatteredInterpolant m C svnTrunk RadarL
  • 最大化数组中成对距离的总和

    想象一个清单 e1 e2 en 和一个函数f e1 e2 gt number返回常数时间内任意两个元素之间的距离 f e e 0 e1 e2 gt f e1 e2 gt 0 f e1 e2 lt f e1 e3 f e3 e2 目标是排列列
  • 如何使用 Java 本机接口将字节数组传递到以 char* 作为参数的 C 函数中?

    所以我需要使用JNI从java调用C函数 当传入不同的数据类型 创建本机变量 头文件 共享库等等 时 我已经能够成功地做到这一点 但无法让它与字节数组一起使用 这是我的 C 函数 include
  • 使用mat2cell将MxN的矩阵划分为1xN大小的M矩阵

    我有一个大小为 MxN 的矩阵 比方说 1867x3 1867 行和 3 列 我想将其分成 1867 个大小为 1x3 的单元格 我使用了mat2cell X 1 1866 这里X是矩阵 1867x3 结果给出了两个单元格 一个单元格的大小
  • nginx/uwsgi 服务器的持久内存中 Python 对象

    我怀疑这是否可能 但这是问题和提出的解决方案 提出的解决方案的可行性是这个问题的对象 我有一些需要可用于所有请求的 全局数据 我将这些数据保存到 Riak 并使用 Redis 作为缓存层以提高访问速度 目前 数据被分为约 30 个逻辑块 每
  • 如何找到在matlab中重复的矩阵的每一行的索引?

    我想找到矩阵中所有有重复项的行的索引 例如 A 1 2 3 4 1 2 3 4 2 3 4 5 1 2 3 4 6 5 4 3 要返回的向量将是 1 2 4 很多类似的问题建议使用unique函数 我已经尝试过 但我能得到的最接近我想要的功
  • 使用 MATLAB 进行线路跟踪

    我有一个图像 我想将其转换为逻辑图像 包括线条为黑色 背景为白色 当然 可以使用阈值方法来实现这一点 但我不想使用这种方式来做到这一点 我想通过使用线路跟踪方法或类似的方法来检测它 这是关于视网膜血管检测的 我找到了一个article ht
  • MATLAB 教程中的 SIFT 实现

    我正在寻找 MATLAB 中的一些基本 SIFT 实现 我需要从第一原则来写它 另外 我正在寻找一些可以解释程序中发生的事情的内容 Vedali 的代码和 David Lowe 的代码超出了我的理解范围 如果您是 Matlab 用户 您一定
  • lmfit 最小化失败并出现 ValueError:数组太大

    我正在尝试使用 暴力 方法来最小化 20 个变量的函数 它因神秘错误而失败 这是完整的代码 import random import numpy as np import lmfit def progress update params i
  • 如何通过 Web-Workers 传递自定义类实例?

    由于 Web Worker JSON 在线程之间序列化数据 因此这样的方法不起作用 worker js function Animal Animal prototype foobar function self onmessage func
  • OpenGL 缓冲区、glFlush 和 glutSwapBuffers()

    使用之间有什么区别吗 glutInitDisplayMode GLUT SINGLE GLUT RGB with glFlush and glutInitDisplayMode GLUT DOUBLE GLUT RGB with glutS
  • 括号中的波形符字符

    在 MATLAB 中 以下代码执行什么操作 m func returning matrix 波浪号运算符 的作用是什么 在 Matlab 中 这意味着不要将函数中相应的输出参数分配到赋值的右侧 因此 如果func returning mat
  • 如何加快编辑距离计算速度

    我正在尝试运行模拟来测试平均值编辑距离 http en wikipedia org wiki Levenshtein distance之间随机 二进制字符串 我的程序是用 python 编写的 但我正在使用这个C扩展 https githu
  • 黑白随机着色的六角格子

    我正在尝试绘制一个 10 000 x 10 000 随机半黑半白的六边形格子 我不知道如何将该格子的六边形随机填充为黑色和白色 这是我真正想要从这段代码中得到的示例 但我无法做到 https i stack imgur com RkdCw
  • matlab中的排列函数是如何工作的

    这是一个有点愚蠢的问题 但我似乎无法弄清楚排列在 matlab 中是如何工作的 以文档为例 A 1 2 3 4 permute A 2 1 ans 1 3 2 4 到底是怎么回事 这如何告诉 matlab 3 和 2 需要交换 哇 这是我迄
  • matlab中的正则逻辑回归代码

    我正在尝试正则化 LR 在 matlab 中使用以下公式很简单 成本函数 J theta 1 m sum y i log h x i 1 y i log 1 h x i lambda 2 m sum theta j 梯度 J theta t
  • 理解高斯混合模型的概念

    我试图通过阅读在线资源来理解 GMM 我已经使用 K 均值实现了聚类 并且正在了解 GMM 与 K 均值的比较 以下是我的理解 如有错误请指出 GMM 类似于 KNN 在这两种情况下都实现了聚类 但在 GMM 中 每个簇都有自己独立的均值和
  • 相当于 min() 的 rowMeans()

    我在 R 邮件列表上多次看到这个问题 但仍然找不到满意的答案 假设我有一个矩阵m m lt matrix rnorm 10000000 ncol 10 我可以通过以下方式获得每行的平均值 system time rowMeans m use
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 有效地绘制大时间序列(matplotlib)

    我正在尝试使用 matplotlib 在同一轴上绘制三个时间序列 每个时间序列有 10 6 个数据点 虽然生成图形没有问题 但 PDF 输出很大 在查看器中打开速度非常慢 除了以栅格化格式工作或仅绘制时间序列的子集之外 还有其他方法可以获得

随机推荐

  • 如何使用叠加视图录制视频

    您好 我正在尝试使用叠加录制视频 我已经写了 void addOvelayViewToVideo NSURL videoURL 在录制的视频上添加叠加视图 但它不起作用 我编写了录制视频的代码viewDidLoad using AVCapt
  • 如何将 800x480 5 英寸屏幕分成两部分

    我正在使用 Raspberry Pi 3 model b 构建一个独立的 VR 耳机 我在手机上看到的分割屏幕时遇到问题 我仍在学习 Python 所以我不太了解如何做到这一点 在此代码中 我尝试解决上述问题 但是当我在 Raspbian
  • Context.startForegroundService() 然后没有调用 Service.startForeground

    我的应用程序将调用startForegroundService intent in the onCreate of the MainActivity 我把startForeground ON SERVICE CONNECTION NID n
  • 将对象发送到 WCF 服务。反序列化时超出 MaxStringContentLength(8192 字节)

    我创建了一个简单的 WCF Web 服务 它有一个方法 SubmitTicket flightticket ft string username string password 在客户端 我有一个用于填写表格 机票 并将其发送到这个新创建的
  • MacOS OmniSharp 在 vscode 中超时错误

    今天早上我启动了 vscode 1 13 1 并想用 C dotnet core 编写代码 但我遇到了同样的错误 您可以在 google 中找到该错误 但在当前版本的 OmniSharp 中 Omnisharp 正确地看到了我的项目 但没有
  • 从 Java 调用存储过程

    我正在尝试从我的 Java 应用程序调用 mySQL 存储过程 当我从 mySQL 工作台调用存储过程时 它可以工作 并且根据我发送的参数获得正确的行数 当我尝试从 Java 调用它时 问题就出现了 我没有得到任何结果 也找不到原因 我一直
  • 验证当前经过身份验证的 Windows 用户是否具有委派权限

    鉴于我有一个使用 Windows 身份验证的 WCF 服务 并且我想模拟它们并调用另一个 WCF 服务 如下所示 using ServiceSecurityContext Current WindowsIdentity Impersonat
  • sklearn凝聚聚类:动态更新聚类数量

    sklearn cluster AgglomerativeClustering 的文档提到 当改变集群数量并使用缓存时 计算完整的树可能是有利的 这似乎意味着可以首先计算完整的树 然后根据需要快速更新所需集群的数量 而无需重新计算树 使用缓
  • 分割 ActionBar 中的 withText

    我遇到一个问题 如果ActionItem有图标和文本 并且ActionBar被分割后 即使showAsAction always withText 有没有办法强制显示文字 withText是对系统的一个提示 在宽度受限的设备或配置上 系统可
  • NetBeans 设计视图大小 - 放大/缩小

    快速提问 是否可以放大 缩小 NetBeans 中的 设计 视图 我正在用 Java 制作一个具有固定框架大小的应用程序 我的笔记本电脑是全屏 我在设计视图中看不到整个框架 这有点不方便 我发现可以放大 缩小代码 源视图 的信息 但在设计视
  • dunder 方法是继承的吗?

    如果我定义 getstate and setstate 在父类中 子类可以继承这些方法吗 有一些相关的讨论这个答案 但仅限于前面带有双下划线 dunder 的方法 一些额外的信息 我这样做是为了定义我的类的序列化 pickling 行为 P
  • 将泛型类型参数显式转换为任何接口

    In 泛型常见问题解答 最佳实践 says 编译器将允许您将泛型类型参数显式转换为任何接口 但不能转换为类 interface ISomeInterface class SomeClass class MyClass
  • h:selectOneRadio 在一行中渲染所有选择项,如何在新行中渲染每个项目?

    我有一个selectOneRadio标签和所有单选按钮选项显示在一行上 如何使其每行 行一个选项 要了解标签的行为及其所有可用属性 一个很好的起点是标签文档 这是摘录的相关性
  • 更改 java 12+ 中的静态最终字段

    这个问题与使用 Java 反射更改私有静态最终字段 在那里 有人问 如何改变private static final多变的 但是 该问题的答案在 Java 12 中不起作用 因为您无法访问私有变量java lang reflect Fiel
  • 您可以将存储过程设置为始终以特定用户身份执行吗?

    我想设置一个存储过程以始终作为特定域用户执行 无论用户调用或尝试执行该过程 我都可以强制该过程以另一个用户的身份执行吗 我们的供应商之一将其应用程序硬编码为使用本地数据库帐户来执行某些过程以导入某些 csv 文件 不幸的是 我们无法将 cs
  • 请帮助完成非常简单的 Android 小部件按钮单击。变得非常沮丧。 :(

    我已经仔细研究了我能找到的每一个例子 并且浏览了谷歌的官方文档 我想做的就是通过单击小部件上的按钮创建一个 Toast 通知 我可以让小部件 和按钮 出现 但我无法触发我的意图 我见过几个例子 显示了以不同的方式进行此操作 但我就是无法让它
  • django allauth 空用户名导致 postgres 数据库中出现重复键

    姜戈 1 8 16 django allauth 0 27 0 使用 postgres 作为数据库 我的应用程序不使用用户名 仅使用电子邮件地址作为用户 ID 所以我使用以下设置 ACCOUNT AUTHENTICATION METHOD
  • 在使用reactjs发送POST请求之前,如何等待firebase检查用户是否有效?

    我使用以下代码来获取用户 idToken 然后将其作为授权标头发送到后端 const user firebase auth currentUser const idToken await user getIdToken 像这样发送 var
  • 在过滤的每一步打印数据框尺寸

    我正在使用 tidyverse 过滤出数据帧 并希望在中间对象的尺寸 或 nrows 的每个步骤中进行打印 我以为我可以简单地使用 magrittr 的三通管操作器 但它不起作用 我想我理解 T 形管背后的概念 但无法弄清楚出了什么问题 我
  • MATLAB 中的循环缓冲区,**无需**复制旧数据

    这里有一些很好的帖子 例如this one 了解如何在 MATLAB 中创建循环缓冲区 然而 从观察它们来看 我认为它们不适合我的应用程序 因为我正在寻找的是 MATLAB 中的循环缓冲区解决方案 它不涉及任何旧数据的复制 举一个简单的例子