给定矩阵M
(x乘以5)和结构thr
,其中包含数字,如何在没有循环的情况下执行以下过程?
2种结构无法使用structfun
。使用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;
答案 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{:});
同样,您可以使用适当的数据结构以更有效的方式执行此操作。 希望这会有所帮助。