微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在嵌套单元格中搜索匹配的字符串并提供索引

如何解决在嵌套单元格中搜索匹配的字符串并提供索引

我有一个嵌套的元胞数组,它被称为 valuesDescription as an image。在此示例中,有 5 个子单元格。通常这个数字在 1 到 30 之间变化。每个单元格有两个子子单元格:

  1. 他的第一个values{5,1}{1,1} 始终只有一个字符值 (在本例中,TOTALMGS
  2. 第二个或 values{5,1}{2,1} 具有由两列组成的矩阵:左侧 - 温度值,右侧 - 物理属性

我的目标是找到包含字符值 'TOTAL' (values{5,1}) 的子单元格,并以某种方式获取矩阵的索引(输出values{5,1}

为了应对挑战,我编写了我的手工解决方案。如果 'TOTAL' 中的字符 a{5,1} 中存在并采用 298.15 K 旁边的相应值,则此代码有效。但是,字符串 'TOTAL' 可能在其他地方。在这种情况下,我有问题。在这解决方案中,双循环需要很长时间。那么,您是否有另一种解决方案,如何使用 'TOTAL' 避免循环找到单元格的索引?

    for m = 1:numel(values)
        for n = 1:numel(values(m))
            a = values(m);
            if string(a{5,1}) == 'TOTAL'
                k = a{5,1}(:,1); %column with temp numbers
                n = 298.15;           %rT
                [~,~,idx] = unique(round(abs(k-n)));
                minVal = k(idx==1);
                valueAtRT = sprintf('%f',a{1,1}{5,1}(length(a{1,1})+idx));
                break;
            end
        end
    end

感谢您的帮助。

解决方法

假设只有一个带有 'TOTAL' 的单元格,我找到了解决方案:

is = cellfun( @(cac) strcmp(cac{1},'TOTAL'),values,'uniformoutput',false  );
num = values{is}{2};
valueAtRT = interp1( num(:,1),num(:,2),298.15,'nearest','extrap' );

is 提供单元格的索引,其中存储了字符 'TOTAL',第三行提供了 298.15 旁边的值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。