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



我有一个嵌套的单元格数组,它被调用CCD_ 1。描述为图像。在这个例子中,有5个子单元。通常这个数字在1到30之间是可变的。每个单元格有两个子单元格:

  1. 第一个或values{5,1}{1,1}总是只有一个字符值(在本例中为TOTALMGS(
  2. 第二个,或values{5,1}{2,1},由两列组成的矩阵:左边是温度值,右边是物理性质

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

为了应对挑战,我写了我的手工解决方案。如果values0中的字符'TOTAL'中有,则此代码有效,并且在298.15K旁边取相应的值。但是,字符串'TOTAL'可能在其他位置。在这种情况下,我有一个问题。在这个解决方案中,双循环需要很长时间。那么,你有其他解决方案吗?如何找到'TOTAL'避免循环的单元格的索引?

for m = 1:numel(values)
for n = 1:numel(values(m))
a = values(m);
if string(a{5,1}{1,1}) == 'TOTAL'
k = a{5,1}{2,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}{5,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后面的值。

相关内容

  • 没有找到相关文章

最新更新