C#中的滑动窗口算法

2023-12-05

我正在尝试在 C# 3.0 中的二维数组上实现简单的滑动窗口算法, 我发现this非常有用,但它只涉及一维数组。

The post还包括算法的代码,我完全无法将它用于我的场景......任何人都可以建议我如何继续吗?

设想:

http://parasu516.googlepages.com/matrix.jpg
(source: googlepages.com)

上面的图像是 10X10 矩阵,需要使用任何算法得到 3X3 矩阵(滑动窗口会很棒)。红色矩形是第一组,绿色矩形是第二组。它会一直持续到所有行的末尾

PS:我用谷歌搜索了该算法,但没有运气:(


天真的实现:

private static IEnumerable<T[,]> GetWindows<T>(
    T[,] array,
    int windowWidth,
    int windowHeight)
{
    for (var y = 0; y < array.GetLength(1) - windowHeight + 1; y++)
    {
        for (var x = 0; x < array.GetLength(0) - windowWidth + 1; x++)
        {
            var slice = new T[windowWidth, windowHeight];
            CopyArray(array, x, y, slice, 0, 0, windowWidth, windowHeight);
            yield return slice;
        }
    }
}

在二维数组之间复制的辅助方法:

private static void CopyArray<T>(
    T[,] src, int srcX, int srcY,
    T[,] dst, int dstX, int dstY,
    int width, int height)
{
    for (var x = 0; x < width; x++)
    {
        for (var y = 0; y < height; y++)
        {
            dst[dstX + x, dstY + y] = src[srcX + x, srcY + y];
        }
    }
}

测试主要:

private static void Main(string[] args)
{
    var array = new string[5, 5];
    for (var y = 0; y < array.GetLength(1); y++)
    {
        for (var x = 0; x < array.GetLength(0); x++)
        {
            array[x, y] = string.Format("({0}|{1})", x, y);
        }
    }
    foreach (var window in GetWindows(array, 3, 3))
    {
        ShowArray(window);
    }
    Console.ReadLine();
}

private static void ShowArray<T>(T[,] array)
{
    for (var x = 0; x < array.GetLength(0); x++)
    {
        for (var y = 0; y < array.GetLength(1); y++)
        {
            Console.Write("    {0}", array[x, y]);
        }
        Console.WriteLine();
    }
    Console.WriteLine();
}

Output:

(0|0)    (0|1)    (0|2)
(1|0)    (1|1)    (1|2)
(2|0)    (2|1)    (2|2)

(1|0)    (1|1)    (1|2)
(2|0)    (2|1)    (2|2)
(3|0)    (3|1)    (3|2)

(2|0)    (2|1)    (2|2)
(3|0)    (3|1)    (3|2)
(4|0)    (4|1)    (4|2)

(0|1)    (0|2)    (0|3)
(1|1)    (1|2)    (1|3)
(2|1)    (2|2)    (2|3)

(1|1)    (1|2)    (1|3)
(2|1)    (2|2)    (2|3)
(3|1)    (3|2)    (3|3)

(2|1)    (2|2)    (2|3)
(3|1)    (3|2)    (3|3)
(4|1)    (4|2)    (4|3)

(0|2)    (0|3)    (0|4)
(1|2)    (1|3)    (1|4)
(2|2)    (2|3)    (2|4)

(1|2)    (1|3)    (1|4)
(2|2)    (2|3)    (2|4)
(3|2)    (3|3)    (3|4)

(2|2)    (2|3)    (2|4)
(3|2)    (3|3)    (3|4)
(4|2)    (4|3)    (4|4)

现在您所要做的就是应用该博客文章中所示的相同技术:)

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

C#中的滑动窗口算法 的相关文章

  • Poco c++Net:Http 从响应中获取标头

    我使用 POCO C Net 库进行 http 我想尝试制定持久缓存策略 首先 我认为我需要从缓存标头中获取过期时间 并与缓存值进行交叉检查 如果我错了 请告诉我 那么我如何从中提取缓存头httpResponse 我已经看到你可以用 Jav
  • 单元测试验证失败

    我正在运行我的单元测试PostMyModel路线 然而 在PostMyModel 我用的是线Validate
  • 如何在另一个应用程序中挂钩 api 调用

    我正在尝试挂钩另一个应用程序的 ExtTextOut 和 DrawTextExt GDI 方法调用 我知道我需要使用 GetProcAddress 来查找 gdi32 dll 中那些方法的地址 并用我的函数的地址覆盖我想要挂钩的进程中的地址
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • 将完整模板参数值映射到原始类型

    我想将数字映射到类型 在这个例子中 我将创建一个函数 将 sizeof 结果映射到有符号的原始类型 我想知道是否有更好的方法来完成我在现代 C 中所做的事情 即采用模板化值并将其转换为类型 现在 这可以将大小转换为已知类型 但我似乎无法在标
  • linq 中使用字符串数组 c# 的 'orderby'

    假设我有一个这样的方法定义 public CustomerOrderData GetCustomerOrderData string CustomerIDs var query from a in db Customer join b in
  • 运行需要 MySql.Data 的内置 .NET 应用程序

    我在运行我编写的内置 NET 应用程序时遇到问题 我的应用程序使用最新的 MySql 连接器 该连接器安装在我的系统上 当我尝试将其添加为引用时 该连接器显示为 NET 4 Framwork 组件 当我在环境中以调试模式运行应用程序时 一切
  • 如何制作可启动程序?

    所以 这个问题可能看起来很奇怪 但假设我编译了 int main void int x 3 int y 4 int z x y 是否可以让CPU这样运行 如何 例如 这允许我写入监视器吗 如果我没记错的话 内存中有些地方可以写入要显示的内容
  • C# 5 async/await 线程机制感觉不对?

    为什么让调用线程进入异步方法直到内部 等待 一旦调用异步方法就生成一个线程 这不是更干净吗 这样您就可以确定异步方法会立即返回 您不必担心在异步方法的早期阶段没有做任何昂贵的事情 我倾向于知道某个方法是否要在 我的 线程上执行代码 不管是堵
  • 计算另一个表达式中的 C# 表达式

    我想在另一个表达式中使用一个表达式 Expression
  • 为什么'enable_if'不能用于禁用这里声明

    include
  • 如何对 NServiceBus.Configure.WithWeb() 进行单元测试?

    我正在构建一个 WCF 服务 该服务接收外部 IP 上的请求并将其转换为通过 NServiceBus 发送的消息 我的单元测试之一调用Global Application Start 它执行应用程序的配置 然后尝试将 Web 服务解析为 验
  • 在 asp.net MVC 中使用活动目录进行身份验证

    我想使用活动目录对我的 asp net mvc 项目中的用户进行身份验证 在网上冲浪了几个小时后 我没有找到任何对我有用的东西 我已经看到了所有结果 但什么也没有 我尝试按照许多帖子的建议编辑我的 web config 如果有人可以帮助我提
  • Project Euler #8,我不明白我哪里出了问题[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在做项目欧拉第八题 https projecteuler net problem 8 其中我得到了这个大得离谱的数字 7316
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • 在 OpenGL 中渲染纹理 1 到 1

    所以我想做的是使用 OpenGL 和 C 将纹理渲染到平面上 作为显示图像的一种方式 但是我需要确保在渲染纹理时没有对纹理进行任何处理 抗锯齿 插值 平滑 模糊等 这是 OpenGL 处理渲染纹理的默认方式吗 或者是否需要设置一些标志才能禁
  • 选择查询不适用于使用Parameters.AddWithValue 的参数

    C 中的以下查询不起作用 但我看不出问题所在 string Getquery select from user tbl where emp id emp id and birthdate birthdate cmdR Parameters
  • CUDA 8 编译错误 -std=gnu++11

    我正在尝试转换一些代码以使用 CUDA 并且我认为我遇到了兼容性问题 我们使用CMake 这些是我使用的 gcc 和 CUDA 版本 gcc version gcc Ubuntu 5 4 0 6ubuntu1 16 04 5 5 4 0 2
  • DataContractSerializer 事件/委托字段问题

    在我的 WPF 应用程序中 我正在使用DataContractSerializer序列化对象 我发现它无法序列化具有事件或委托声明的类型 考虑以下失败的代码 Serializable public abstract class BaseCl
  • 缓存感知树的实现

    I have a tree where every node may have 0 to N children 用例是以下查询 给定指向两个节点的指针 这些节点是否位于树的同一分支内 Examples q 2 7 gt true q 5 4

随机推荐

  • 在 cygwin/gfortran 下编译 Fortran 程序给出“对‘_WinMain@16’的未定义引用”

    在 Cygwin 终端中我输入 gfortran o threed euler fluxes v3 exe threed euler fluxes v3 f90 我得到编译器错误 usr lib gcc i686 pc cygwin 4 5
  • 尝试使图像在点击时触发功能 - p5.js

    我正在做一个带有交互式画布的艺术课项目 我的目标是让小动物在被点击时发出声音并 移动 我尝试在不创建类的情况下执行此操作 因为由于某种原因我无法在类中使用图像 我正在尝试尽可能轻松地做到这一点 我所说的 移动 是指我试图让背景图像出现在它们
  • 如何在 cy.log() 中打印对象?

    Use case 这是一个用 JS 编码的 Cypress E2E 测试 我正在尝试比较预生产和生产站点地图 URL 内容 以找到差异 我有两个数据集 夹具 一个用于生产 另一个用于测试环境 代码片段 let compareUrlsBetw
  • YouTube API v3 返回截断的观看历史记录

    我可以通过 YouTube v3 数据 API 访问我的观看历史记录 但它仅返回我最近的 30 个视频 尽管当我在 YouTube com 上查看观看历史记录时我会看到更多 然后当我看另一个视频时 它返回31 当我看另一个视频时 它返回32
  • java 版本仍然显示为 1.4 linux

    java version 仍然返回旧的 java 版本 我有红帽Linux 我在以下路径中安装了jdk 1 5并更新了bask配置文件并做了一个源但java版本仍然显示1 4 JAVA HOME usr local jdk jdk1 5 0
  • Google Analytics API V4:includeEmptyRows:“true”,不起作用

    我正在将我的应用程序迁移到 V4 问题是您需要将 includeEmptyRows 设置为 TRUE 这就是我刚刚所做的 然而 空行根本没有填充 function queryReports gapi client request path
  • 使用 ActionMailer 发送带有内嵌图像的 HTML 电子邮件

    我有一个像这样的简单 ActionMailer 类 class MyMailer lt ActionMailer Base def mail from to cc bcc subject message sent at Time now s
  • ImageReader 导致相机滞后

    我面临的问题是 除了用于显示相机输出的 SurfaceView 之外 我还使用 ImageReader 我已经添加了 SurfaceView 本身和 ImageReader 的表面 如下所示 并添加了 ImageReader 侦听器以便接收
  • 具有/不同列数的 vec2mat

    参考使用不同的起始 结束元素数重塑行 Divakar 提出了一个很好的解决方案 但是 如果列数并不总是相同怎么办 样本运行 gt gt A ans 4 9 8 9 6 1 8 9 7 7 7 4 6 2 7 1 gt gt out out
  • 这个执行切入点表达式是如何工作的?

    我遇到了一个answer来自 kriegaex 我无法理解 我试图理解的切入点表达式如下 Around execution MyAnnotation execution MyAnnotation 据我了解 这个表达式将建议任何带有注释的类或
  • 如何使用批处理文件屏蔽输入而不需要额外的文件

    我想要批处理文件用 屏蔽输入而不需要额外的文件 例如 http pastebin com 2c4EtG4g 这段代码运行成功 但是当我写这封信时速度非常慢 任何人都可以给我 代码速度快并且没有额外的文件 或者编辑链接中的代码以加快速度 这符
  • 针对 BlackBerry 上的多种屏幕尺寸进行开发

    Android 和 iOS 具有 密度独立像素 的概念 因此您的布局在不同密度和屏幕尺寸的设备上看起来相同 到目前为止 我已经编写了使用像素手动间隔元素的代码 即我希望此按钮距屏幕左侧 10 个像素 这在曲线上非常棒 但是当我将其加载到粗体
  • 将复杂结构编组到 C#

    我仍在努力将一个相当复杂的结构从 C 编组到 C C 中的结构体如下 typedef struct DWORD Flags DWORD TimeCode DWORD NodeMoving Matrix NodeRots NUM GYROS
  • python基础级别生成器和列表问题[重复]

    这个问题在这里已经有答案了 my nums i i for i in 1 2 3 4 5 for k in my nums print k GG list my nums print GG 它打印 1 4 9 16 25 Process f
  • 强制浏览器在显示页面之前加载 CSS

    我已经制作了我的网站的移动版本 然而 在加载页面时 网站首先会在未应用 CSS 的情况下显示 一秒钟后 最多 它会应用 CSS 并正确呈现 此行为在所有浏览器 包括移动浏览器 中都是一致的 你知道我如何强制浏览器首先加载CSS 它的尺寸真的
  • 为什么我必须为 React 组件类中定义的方法添加 .bind(this) ,而不是在常规 ES6 类中定义方法

    让我困惑的是为什么当我定义一个 React 组件类时 包含在this对象在定义的方法中未定义 this在类中的生命周期方法中可用 除非我使用 bind this 或者使用箭头函数定义方法 例如下面的代码this state将是未定义的ren
  • 从具有不同高度的表格行中提取pdf文本(java使用pdfbox库)

    黑色形状是需要提取的文本 到目前为止 我已经从列中提取了文本 但是是手动提取的 因为只有 5 个 对区域使用 Rectangle 类 我的问题是 有没有办法对行执行此操作 因为矩形的大小 高度 不同 并且手动对 50 多行执行此操作将是一种
  • Bootstrap 工具提示 HTML, 锚标记上带有很棒的字体图标,但焦点不起作用

    我有以下 HTML 它按预期工作 当悬停到 符号时 会出现工具提示 但是因为其中一个在工具提示内有链接 所以我希望它表现得像 焦点 并且同时也 悬停 因此当我悬停其中包含链接的工具提示时 它仍然像 悬停 一样 当我没有悬停 HTML 时 工
  • 将 DateInterval 格式设置为 ISO8601

    我目前正在开发一个 php 项目 需要将 DateInterval 格式化为 ISO8601 类似这样 P5D 此格式可用于创建 DateTime 和 DateInterval 对象 但我无法找到将 DateInterval 格式化为此格式
  • C#中的滑动窗口算法

    我正在尝试在 C 3 0 中的二维数组上实现简单的滑动窗口算法 我发现this非常有用 但它只涉及一维数组 The post还包括算法的代码 我完全无法将它用于我的场景 任何人都可以建议我如何继续吗 设想 source googlepage