MATLAB:在没有循环的情况下在2个结构上重写相同的操作?

时间:2013-03-08 12:24:18

标签: matlab loops struct

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

2种结构无法使用structfun。使用arrayfun无法分配到我的结构indexcellfun也不是正确的。有人帮忙吗?

提前谢谢!

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;

1 个答案:

答案 0 :(得分: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{:});

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