CopyMask

版本1.1.0.0(12.8 KB)由 1月
快速线性索引

328下载

更新2015年2月5日

查看许可协议

CopyMask -逻辑索引
Matlab的线性索引速度很快,比通常使用FIND快得多。
但如果使用C-Mex函数,速度可以提高一倍以上。
Y = CopyMask(X, Mask, Dim)
输入:
X:数组类型:DOUBLE, SINGLE, (U)INT8/16/32/64), LOGICAL, CHAR。
X可以是复数。
掩码:作为逻辑向量的掩码。
暗:指定遮罩尺寸。如果省略或空矩阵[]
采用线性索引。可选,默认值:[]。
输出:
Y:与x类型相同的数组。对于线性索引,Y是一个[N x1]向量。

注:
-等效Matlab代码:Y = X(Mask)
-与Matlab逻辑索引的区别:
* 2到3倍快的线性索引。
*在每种情况下都返回一个列向量。
*掩码不能超过数组,而Matlab允许额外的
当尾随值为FALSE时。
—如果指定了Dim,且X值不小,则该函数仅为某个百分比
比等效的Matlab代码快,例如:Y = X(:, Mask,:)

例子:
X = rand(2,3,4);
Y = CopyMask(X, X > 0.2);% Matlab: X(X > 0.2),明显更快

M =[真,假,真];
Z = CopyMask(X, M, 2);% Matlab: X(:, M,:),稍微快一点

我只能在Matlab 2009a和2011b下进行测试。在现代Matlab版本中,这种加速可能已经消失了。请随时将单元测试函数的输出发送到代码中给出的地址。

首先必须编译c文件。如果之前执行了"mex -setup",则在没有输入的情况下调用CopyMask将启动自动编译。如果编译失败,你可以下载预编译文件:http://www.n-simon.de/mex

引用作为

1月(2023)。CopyMask(//www.tianjin-qmedu.com/matlabcentral/fileexchange/49553-copymask), MATLAB中央文件交换。检索

MATLAB版本兼容性
使用R2011b创建
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!
版本 发表 发布说明
1.1.0.0

修正了描述中的错别字

1.0.0.0