我在MATLAB工作,我有以下单元格数组:
pippo =
'FSize' [ 10]
'MSize' [ 10]
'rho' [ 997]
'u2' [ 86.2262]
'n' [ 100]
'nimp' [ 2]
'impeller1dir' [1x66 char]
'impeller2dir' [1x66 char]
'comparedir' [1x57 char]
我想在第二列中返回单元格的内容,该内容对应于第一行第一列中单元格的给定值。即,如果输入是' nimp',我想返回2。 有没有一种简单的方法可以做到这一点,不涉及循环,或循环是唯一的方法?
答案 0 :(得分:1)
执行此操作的两种方法是containers.Map
和logical indexing
首先,我们将使用strcmp
在ind=strcmp(pippo(:,1),'nimp')
的第一列中找到输入的出现,然后在第二列中获取该单元格的内容,其中这是真的pippo{ind,2}
< / p>
可以与
组合成一行out = pippo{strcmp(pippo(:,1),'nimp'),2}
使用containers.Map
您可以将第一列中的键映射到第二列中的值,此信息存储为容器,下面是pippo2变量
pippo2=containers.Map(pippo(:,1),pippo(:,2))
然后你可以使用键的参数调用容器并获取值作为输出
out=pippo2('nimp')
out =
2