2013-04-08 72 views
1

我有一個matlab.unittest.constraints單元格數組和值的單元格數組。我想看看這些值是否與約束匹配(分別)。當然,我可以只使用一個FOR循環,如下面的代碼的東西:如何檢查單元數組是否滿足任意數量的matlab.unittest.constraints?

satisfied = zeros(1,argLength); 
for i=1:argLength 
    satisfied(i) = satisfiedBy(cons{i}, val{i}); 
end; 
answer = all(satisfied); 

但是知道MATLAB,必須有凝聚所有的成單行的方式,我只是不知道它。我事先比較數組的長度,如果不相等則返回false。

回答

2

這裏是一個可能的CELLFUN聲明:

satisfied = cellfun(@satisfiedBy, cons, val); 

確保satisfiedBy只返回單個數字/邏輯值。

+0

@VPeric如果您正在尋找速度,由於JIT加速,for循環可能會更快。 – 2013-04-08 21:07:42

+0

@EitanT,我認爲簡單的cellfun/arrayfun語句有時會提高速度。特別是當'UniformOutput'設置爲'true'時。但我會在每種情況下測試它。 – yuk 2013-04-08 21:14:36

+0

我不同意速度的小幅增加,JIT在最近的MATLAB版本中超快。我確實同意應該測試。在任何情況下,+1 :) – 2013-04-08 21:16:02

相關問題