0

给定矩阵M(x 乘以 5)和thr包含数字的结构,我如何在没有循环的情况下执行以下过程?

不能使用structfun2 个结构。arrayfun无法分配给我的结构使用index。也不cellfun是对的。有人帮忙吗?

先感谢您!

index.b = M(:,1) >= thr.b;
index.c = M(:,2) >= thr.c;
index.h = M(:,3) >= thr.h;
index.r = M(:,4) >= thr.r;
index.s = M(:,5) >= thr.s;
4

1 回答 1

0

如果你真的需要维护你的数据结构,这里是一个解决方案。

首先,让我们创建虚拟输入:

M = rand(5);
index = struct('b',[],'c',[],'h',[],'r',[],'s',[]);
thr = struct('b',.5,'c',.5,'h',.5,'r',.5,'s',.5);

这是实际的技巧:

A = bsxfun(@ge, M, [thr.b, thr.c, thr.h, thr.r, thr.s]);
A = num2cell(A,1);
[index.b, index.c, index.h, index.r, index.s] = deal(A{:});

同样,您可以使用适当的数据结构以更有效的方式执行此操作。希望这可以帮助。

于 2013-03-08T15:31:17.330 回答