【问题标题】:cell string array manipulation元胞字符串数组操作
【发布时间】:2016-04-22 23:30:02
【问题描述】:

我有一个包含以下格式字符串的单元格:

data = {'para1_left = numeric value';'para1_right = numeric value';
        'para2_left = numeric value';'para2_right = numeric value';
        ........
        'para100_up = numeric value';'para100_down = numeric value';
         and so on...I have a few hundreds of these};

我想要这个单元格中的两个单元格:一个只有参数名称 p_name,另一个只有值 p_val。

一旦我有了这两个单元格,我想将 p_name 单元格与另一个长度较短的单元格进行比较。这个新单元格将包含以下格式的字符串:

new_cell = {'para1';'para5';'para10';...'para25'};

基本上这些字符串会遗漏尾随部分:_left、_right 等。

然后,我想要一个包含new_cellindx_match = [1;2;10;20....and so on] 中任何字符串的p_name 索引列表,以便我可以通过执行p_val{indx_match} 来获取匹配参数名称的值。

我想用最少的行数完成上述操作,可能使用cellfun。我想出了如何使用strfind 命令找到索引,但随后它创建了一个单元格数组并且p_val{indx_match} 不起作用(我尝试了使用cellfun 的各种方法,但还没有成功)。

【问题讨论】:

    标签: matlab cell-array


    【解决方案1】:

    我不确定你到底想要什么,但这应该能让你走上正轨。

    Org = {'a_l = 5'; 'a_r = 7'; 'b_l = 6'; 'b_r = 7'};
    Shr = {'a'};
    splt = cellfun(@(s) strsplit(s, {'=', ' '}), Org, 'uni', 0);
    p_name = cellfun(@(c) c{1}, splt, 'uni', 0);
    p_val = cellfun(@(c) str2num(c{2}), splt);
    param = cellfun(@(c) strsplit(c, '_'), p_name, 'uni', 0);
    param = cellfun(@(c) c{1}, param, 'uni', 0);
    index = cellfun(@(s) strfind(param, s), Shr, 'uni', 0);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      • 2015-03-15
      • 2011-03-14
      • 1970-01-01
      相关资源
      最近更新 更多