Doug Hull,Mathworks
(最初发布在Doug的Matlab视频教程博客上。)
最近,MATLAB用户问我如何使可以使用一系列结构,以这样的方式,即她可以过滤结构数组,然后组合剩余的字段。一旦组合,她将在此组合数据上运行任意处理函数。
该广义架构允许她不使用开关箱和其他流量控制。代表感兴趣领域的字符串可能来自一个GUI,使她的GUI能够以许多任意和可定制的方式处理。
以下是帖子中的代码:
清除CLC S(1).Condition = 1;s(2).condition = 1;s(3).condition = 2;s(4).condition = 2;s(1).velocity = [11:21];s(2)。velocity = [22:32];s(3)。velocity = [33:43];s(4)。velocity = [44:54];S(1).acceleration = [111:121];s(2).acceleration = [122:132]; s(3).acceleration = [133:143]; s(4).acceleration = [144:154]; fieldToFilterBy = 'condition'; valueToFilterBy = 2; fieldToProcess = 'acceleration'; processingFunction = @mean; listOfFilterValues = [s.(fieldToFilterBy)]; vi = (listOfFilterValues == valueToFilterBy) filteredStructure = s(vi) mergedFieldOfInterest = [filteredStructure(:).(fieldToProcess)] processedFilteredData = feval(processingFunction, mergedFieldOfInterest)