元胞字符串数组操作
cell string array manipulation
我有一个包含以下格式字符串的单元格:
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 等
然后,我想要一个 p_name
的索引列表,其中包含 new_cell
、indx_match = [1;2;10;20....and so on]
中的任何字符串,以便我可以获得匹配参数的值通过 p_val{indx_match}
.
命名
我想用最少的行数完成上述操作,可能使用 cellfun
。我想出了如何使用 strfind
命令找到索引,但随后它创建了一个元胞数组并且 p_val{indx_match}
不起作用(我使用 cellfun
尝试了各种方法,但还没有成功).
我不确定你到底想要什么,但这应该会让你走上正轨。
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);
我有一个包含以下格式字符串的单元格:
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 等
然后,我想要一个 p_name
的索引列表,其中包含 new_cell
、indx_match = [1;2;10;20....and so on]
中的任何字符串,以便我可以获得匹配参数的值通过 p_val{indx_match}
.
我想用最少的行数完成上述操作,可能使用 cellfun
。我想出了如何使用 strfind
命令找到索引,但随后它创建了一个元胞数组并且 p_val{indx_match}
不起作用(我使用 cellfun
尝试了各种方法,但还没有成功).
我不确定你到底想要什么,但这应该会让你走上正轨。
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);