matlab 将图片遮罩处理,python-在Matlab中优化“遮罩”功能

本文探讨了在Matlab和Python中实现图像遮罩处理的性能比较,通过提供不同实现方式的代码示例,展示如何在Matlab中优化这一功能。作者在基准测试中发现Python的Numpy解决方案速度显著更快,但仍在寻求Matlab的最佳解决方案。最后,文章提到了使用`bsxfun`函数可能是一种有效的Matlab优化方法。
摘要由CSDN通过智能技术生成

为了进行基准比较,我考虑简单的功能:

function dealiasing2d(where_dealiased, data)

[n1, n0, nk] = size(data);

for i0=1:n0

for i1=1:n1

if where_dealiased(i1, i0)

data(i1, i0, :) = 0.;

end

end

end

它在伪光谱模拟(数据是一个3d复数数组)中很有用,但基本上它将掩码应用于一组图像,将其中where_dealiased为true的元素置零.

我将在这种简单情况下比较不同语言(以及实现,编译器等)的性能.对于Matlab,我将函数的计时时间定为timeit.由于我不想在Matlab中对我的无知进行基准测试,因此我想用这种语言真正优化此函数.在Matlab中最快的方法是什么?

我现在使用的简单解决方案是:

function dealiasing2d(where_dealiased, data)

[n1, n0, nk] = size(data);

N = n0*n1;

ind_zeros = find(reshape(where_dealiased, 1, []));

for ik=1:nk

data(ind_zeros + N*(ik-1)) = 0;

end

我怀疑这不是正确的方法,因为等效的Numpy解决方案的速度大约快10倍.

import numpy as np

def dealiasing(where, data):

nk = data.shape[0]

N = reduce(lam

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值