使用Matlab

时间:2016-04-04 11:33:42

标签: arrays matlab cell

我有一个存储在SUBJ {s}。中的数据集,然后是SUBJ.WORDS {W}和SUBJ.RECALL {r}字段。我试图创建一个循环,找到SUBJ.RECALL何时对应1(1 =记住的单词,0不记得)。之后我想显示与SUBJ.RECALL为1的位置相对应的单词。说

 SUBJ{1}.WORDS{1}={‘Apple’, ‘Melon’, ‘Cheese’ ,’Pancakes’,Tomatoes’}% words presented.
`SUBJ{1}.RECALL{1}=[1 0 0 1 1]% 1=word recalled 0=word non recalled.

我想要的是显示已被召回的单词,这意味着与SUBJ.RECALL中的1对应的单词。 我这样做了:

for s=1:length(SUBJ)
    for w=1:length(SUBJ.WORDS)
        for r=1:length(SUBJ.RECALL)
            if SUBJ{s}.RECALL{r}==1
                disp(SUBJ{s}.WORDS{(SUBJ.RECALL{r}==1)})
            end
        end
    end
end
  

错误:尝试引用非结构数组的字段。

for s=1:length(SUBJ)
    for w=1:length(SUBJ.WORDS)
        for r=1:length(SUBJ.RECALL)
            find(SUBJ{s}.RECALL{r}==1)
            disp(SUBJ{s}.WORDS{(SUBJ.RECALL{r}==1)})
        end
    end
end
  

错误:尝试引用非结构字段

提前感谢任何评论!

1 个答案:

答案 0 :(得分:0)

您可能不需要这么多for循环,因为您可以使用npm install 处理单元格元素内容。我在下面提供了示例代码。这适用于您的样本数据,但可能因整个数据集而失败,因为我不知道结构。

find