2016-04-22 76 views
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,但沒有成功)。

回答

0

我不確定你想要什麼,但這應該讓你走上正軌。

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);