用于转换许多元素的 dec2bin 函数的更快版本?

2024-02-20

我正在读取位图文件并进行转换each范围从 0 到 255 的 RGB 值的二进制。

因此,240 x 320 位图将有 230400 个 RGB 值需要转换。原来的 dec2bin 函数太慢了,所以我编写了自己的函数,因为我知道我的值始终在 0 到 255 之间。

但遍历 230400 个值仍需要大约 10 分钟。在我的机器上需要 6 秒,单色位图大约需要 2.3 秒。

无论如何,有没有办法将速度加快到 1 秒以下,甚至更好 0.5 秒,因为每一毫秒对我的应用程序都很重要?

这是我的代码:

function s = dec2bin_2(input)

if input == 255
    s = [1;1;1;1;1;1;1;1];
    return;
end

s = [0;0;0;0;0;0;0;0];

if input == 0
    return;
end

if input >= 128
    input = input - 128;
    s(1) = 1;
    if input == 0
        return;
    end
end

if input >= 64
    input = input - 64;
    s(2) = 1;
    if input == 0
        return;
    end
end

if input >= 32
    input = input - 32;
    s(3) = 1;
    if input == 0
        return;
    end
end

if input >= 16
    input = input - 16;
    s(4) = 1;
    if input == 0
        return;
    end
end

if input >= 8
    input = input - 8;
    s(5) = 1;
    if input == 0
        return;
    end
end

if input >= 4
    input = input - 4;
    s(6) = 1;
    if input == 0
        return;
    end
end

if input >= 2
    input = input - 2;
    s(7) = 1;
    if input == 0
        return;
    else
        s(8) = 1;
    end
end
end

我在想,如果我无法在 MATLAB 中完成此操作,那么也许我会在 C++ 中进行转换。这是可取的吗?

Thanks.


更快的方法是使用查找表。由于您知道所有值的强度都在 0 到 255 之间,因此您可以构造每个值的二进制等效值以加快该过程。

% build table (computed once) [using gnovice option#1]
lookupTable = cell2mat(arrayfun(@(i)bitget([0:255]',9-i),1:8,'UniformOutput',0));

% random' image
I = randi(256, [240 320])-1;

% decimal to binary conversion
binI = lookupTable(I(:)+1,:);

在我的机器上,平均需要 0.0036329 秒(仅转换)。请注意,查找表几乎没有空间开销:

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

用于转换许多元素的 dec2bin 函数的更快版本? 的相关文章

  • 如何从绘图处理程序中绘图?

    我有绘图的处理程序或图形的处理程序 例子 h plot 1 0 2 10 xx get h xx DisplayName Annotation 1x1 handle Color 0 0 1 LineStyle LineWidth 0 500
  • 二进制浮点加法算法

    我试图理解二进制级别的 IEEE 754 浮点加法 我遵循了一些在网上找到的示例算法 并且大量测试用例与经过验证的软件实现相匹配 我的算法目前只处理正数 但是 我没有得到与此测试用例的匹配 0000100011110011011001001
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • MATLAB 图中轴标签与轴之间的距离

    我正在使用 MATLAB 绘制一些数据 我想调整轴标签与轴本身之间的距离 但是 只需向标签的 位置 属性添加一点即可使标签移出图窗窗口 是否有 保证金 属性或类似的东西 在上图中 我想增加数字和标签 Time s 之间的距离 同时自动扩展数
  • Matlab Solve():未给出所有解决方案

    我试图找到两条曲线的交点 syms x y g x 20 exp x 30 3 5 1 sol x sol y solve x 22 3097 2 y 16 2497 2 25 y g x x y Real true 它只提供一种解决方案
  • 为什么 MATLAB 本机函数 cov(协方差矩阵计算)使用与我预期不同的除数?

    给定一个 M 维和 N 个样本的数据矩阵数据 例如 data randn N M 我可以计算协方差矩阵 data mu data ones N 1 mean data cov matrix data mu data mu N 如果我使用原生
  • 为什么 MATLAB 在打印大量 (.png) 图形时速度会变慢?

    我正在将大量数字打印为 png 文件 每个图都是数据矩阵中的一列图 我获取 png 文件并将它们串在一起形成动画 我的问题是 前几百张图像打印得很快 但创建每个新图形的时间却迅速增加 从前几百个 png 文件的约 0 2 秒到第 800 个
  • 非模态 questdlg.m 提示

    我的代码绘制了一个图 然后提示用户是否想使用不同的参数绘制另一个图 问题是 当 questdlg m 打开时 用户无法查看绘图的详细信息 这是代码 while strcmp Cont Yes 1 Some code modifying da
  • 如何加载具有可变文件名的 .mat 文件?

    select all mat files oar dir oar mat n oar name loop through files for l 1 length oar load pat oar l lt this is the mat
  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • 直方图均衡结果

    I am trying to code histogram equalization by my self but the results are different from the built in function in matlab
  • 计算数字的二进制表示形式中 1 的数量的最佳方法。 (MIPS)

    我需要计算二进制数中 1 的数量 比如说 5 所以 00001001 将是 2 或 n 2 我正在使用 MIPS 最好的方法来做到这一点 最好的方法是count them 您可以检查是否设置了最低有效位 a1 by and用一个来代替它 如
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • 在 MATLAB 中模拟 C++ 模板

    我试图找出创建 C 模板或 Java 通用对象的替代方案的最佳方法 出于多种不同的原因 我过去曾多次想这样做 但现在我想做的是为几个相关的类创建 saveobj 和 loadobj 函数 我的想法是 我想要一组通用的例程来创建默认结构 然后
  • Matlab 图像数据的 hist 函数

    我是 Matlab 新手 我想制作自己的函数 与 imhist 显示图像数据的直方图 完成相同的工作 但我对此完全是新手 我不知道如何做开发这样的功能 我开始做一些东西 但它非常不完整 function output args myhist
  • 如何正确从表中删除 NaN 值

    在 Matlab 中阅读 Excel 电子表格后 不幸的是 我的结果表中包含了 NaN 例如这个 Excel 表格 将产生此表 其中出现额外的 NaN 列 我尝试使用以下代码片段删除 NaN measurementCells readtab
  • Ilnumerics Ilpanel 在 winform 中编译成 dll 并加载到 matlab 时不激活

    我想将 Visual studio 2012 中用 C 编写的 winform 编译为 dll 然后将其加载到 matlab 2013a 中 然后 我想使用 matlab net 接口与 winform 进行交互 侦听其事件并通过一组预定义
  • 在 MATLAB 中绘图后恢复轴

    从文本文件绘制多种方法的输出后 未显示轴的右侧和上侧 我需要拥有它们并将它们加粗 就像当前的轴一样 绘制的数据来自存储每种方法数据的文件 每个数据文件都是一个 256x2 文件 包含 0 1 之间的值 第一列是精度 第二列是召回率 figu
  • 如何选择面积最大的对象?

    我用过bwconvhull检测图像的某个部分 正如您在图像中看到的那样 有许多具有特定质心的对象 我想做的是检测面积最大的物体 左起第一个大物体 并忽略其他物体 我应该遵循哪种方法 我将非常感谢您的帮助 以下是代码 由于我仍在努力 所以写得
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首

随机推荐

  • LazyColumn 删除项目时显示错误

    我正在创建一个应用程序 除其他外 它使用户能够添加消费者 然后稍后将其删除 消费者显示在卡片中 最后有一个删除按钮 添加消费者效果很好 但是 当我尝试删除消费者时 应用程序屏幕中删除的始终是消费者last one 我知道这不是一个逻辑实现错
  • Eclipse m2eclipse 从本地存储库获取依赖项

    我在我的机器上本地安装了依赖项 m2 repository blah blah blah 并且 m2eclipse 无法识别它们 我认为 m2eclipse 正在使用自己的 Maven 实例 有没有办法强制m2eclipse在osx中 使用
  • Flask 和传输编码:分块

    我们正在尝试让 Flask Web 服务正常工作 但我们在流式帖子方面遇到了一些问题 即当标头包含 Transfer Encoding chunked 时 默认 Flask 似乎不支持 HTTP 1 1 有解决办法吗 我们正在运行这个命令
  • #在Lua中是什么意思?

    我在 Lua 中经常看到哈希字符 被添加到变量前面 它有什么作用 EXAMPLE sort AIs in currentlevel table sort level ais function a b return a y lt b y en
  • 如何使用 ARCore 相机拍摄物体图像?

    我正在使用 ARCore 创建一个应用程序来在空白表面上显示一些图像 我想捕获显示对象的表面的图像 我在 AR 相机屏幕上放置了一个拍摄按钮 是否可以使用 ARCore 相机中的物体捕捉该视图 如果您只需要 ARCore 视图的屏幕截图 您
  • Selenium:查找其他元素“旁边”的元素

    我正在使用 Selenium 将 Web 测试添加到我的项目中 我已经进行了一系列测试 使用以下方法检查特定元素 final WebElement dateElement web findElement By id elementId 这很
  • Swift 版本的 elementsSeparatedByString

    我知道这是菜鸟问题 我在问之前确实先搜索了一下 但我想知道的却没有确切的答案 我们如何在不使用 Objective C 的情况下将字符串拆分为数组 例如 var str Today is so hot var arr str compone
  • 另一个 UIViewController 中 UIViewController 的新实例:为什么我不能设置实例变量?

    所以我有一个名为 MyTabBarViewController 的 UIViewController 子类 它有一个 UIScrollView 在 MyTabBarViewController 内部 我正在创建另一个名为 PhotoView
  • IIS 7 中的“传递身份验证”是什么? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 在 IIS 7 中 在指定网站的物理路径并单击 测试设置 按钮后 我收到以下警告 服务器配置为使用内置帐户的直通身份验证来访问指定的物理路径 但是 I
  • 父级 Flexbox 容器忽略子级 Flexbox 最小宽度

    很短的史前史 我的故事从奋斗开始overflow wrap break word 在弹性盒内工作 Flexbox 容器不想理解它的项目可以缩小 尽管该项目可以破坏长单词 body width 300px border 1px solid b
  • CSS相对位置/正常位置问题

    根据w3schools 相对位置值定义如下 relative 元素相对于其正常位置定位 因此 left 20 向元素的 LEFT 位置添加 20 个像素 我知道我可以获得相对定位的任何 DOM 对象 并使用它 我可以获得相对于原点的左侧或顶
  • VBA 宏将返回连续的月末

    这是我在这个网站上的第一篇文章 我需要有关一些 VBA 代码的帮助 该代码会将 31 07 00 放入单元格 B2 中 然后将每个月末日期放入该列中 并停止在单元格 B126 中的 31 11 2010 即单元格 B2 31 07 00 B
  • 当我上传 .png 图标时,“Android Asset Studio”会添加额外的空间,但当它使用其内部剪贴画时则不会。为什么?

    我正在尝试为我正在处理的一些 Android 应用程序创建一些漂亮的图标 有人引导我使用 Android Asset Studio 这是一个不错的在线工具 它可以创建完整的图标包 准备部署到我的 可怕的 碎片化的 Android 项目 re
  • 从中间向外循环数组的算法?

    我正在研究一种分而治之的算法 事实上 这是一种对多个输入点进行曲线拟合的算法 对于 划分 部分 我需要计算每个点的误差项 如果误差超过给定阈值 我希望在该点分割曲线并分别处理输入的左右部分 一个简单的循环就可以解决问题 但从当前部分的中间开
  • Payara5 服务器将无法部署:未知协议 RFB

    在干净的 eclipse 环境中 payara5 将不会部署 我已经使用 java 1 8 下载了正确版本的服务器 只需将其添加到新服务器即可启动它 我无法摆脱这个错误 payara 登陆页面可以工作 但管理控制台超时 任何帮助表示赞赏 2
  • 如何将正在运行的应用程序扩展到PCR中?

    如何将正在运行的应用程序扩展到PCR中 以及哪种 PCR 可以用于此目的 我假设您指的是 PC 平台上的 TPM 版本 1 2 因此您对以下规范文档感兴趣 TPM 主要部分 2 TPM 结构 http www trustedcomputin
  • 使用 .NET 实时读取文件中的更改

    我有一个经常更新的 csv 文件 大约每分钟 20 到 30 次 我想将新添加的行写入文件后立即将其插入数据库 The 文件系统观察者 http msdn microsoft com en us library system io file
  • Mac“find”和Linux“find”之间的区别[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我继承了一个脚本作为应用程序构建过程的一部分 当我在构建服务器 Ubuntu Precise 上运行它时 它运行良好 但是当我在我的 ma
  • 如何通过 RSA 生成唯一的公钥和私钥

    我正在构建一个自定义购物车 其中 CC 编号和到期日期将存储在数据库中直至处理 然后删除 我需要加密这些数据 显然 我想使用 RSACryptoServiceProvider 类 这是我创建密钥的代码 public static void
  • 用于转换许多元素的 dec2bin 函数的更快版本?

    我正在读取位图文件并进行转换each范围从 0 到 255 的 RGB 值的二进制 因此 240 x 320 位图将有 230400 个 RGB 值需要转换 原来的 dec2bin 函数太慢了 所以我编写了自己的函数 因为我知道我的值始终在