2016-06-20 11 views
0

在Matlab中,我有2个表,其中1个表包含所有其他表的值。第一台被命名为T1如何根据Matlab中的RowNames计算表中的值

freq = [2;3;4;5;6;54;3;4]; 
words = {'finn';'jake';'iceking';'marceline';'shelby';'bmo';'naptr';'simon'}; 

T1 = table(freq,... 
     'RowNames',words) 

表2是

freq = [10;3;6;3] 
words = {'finn';'jake';'simon';'shelby'} 
T2 = table(freq,... 
     'RowNames',words) 

如何使用值从T2到T1和打印这样的:

T3= 
                        freq2 
finn  %is scanned from T2, words that arent contain in T2, is ignored  2/10 %(2 is taken from T2)  
jake                   3/3 %(3 is taken from T2) 
iceking                  4 or 0 or etc %(as long as this name is ignored) 
marceline                  5 or 0 or etc %(as long as this name is ignored) 
shelby                  6/3 %(as long as this name is ignored) 
bmo                   54 or 0 or etc %(as long as this name is ignored) 
naptr                   3 or 0 or etc %(as long as this name is ignored) 
simon                   4/6 %(6 is taken from T2) 

回答

0

这应该这样做。

%copy T1 to be T3 
T3=T1; 
%find where the elements in each table are 
[~,T1Ind,T2Ind] = intersect(T1.Properties.RowNames,T2.Properties.RowNames); 

%modify the values 
T3{T1Ind,1}=T3{T1Ind,1}./T2{T2Ind,1}; 

%modify the others if you want to 
T3{~ismember(T1.Properties.RowNames,T2.Properties.RowNames),1}=0; %or etc 

(只是保持preedited如果你需要它周围的方式)

%If it should be based on the smaller table 
T4 = table(T2.freq./T1{T2.Properties.RowNames,1},'RowNames',T2.Properties.RowNames) 

,如果你要与表中的MATLAB更多的工作,你应该“在表中访问数据”读文档,它真的很适合学习从表中提取数据的不同方法

+1

是的请解释 –

+0

先生,我还有问题要问。我害怕,我错误地问了这个问题。你能帮我吗? –

+0

例如:我想从T1到T2取RowNames,但是当我这样做时,会出现一条消息“无法识别的行名'marceline'/'iceking'/'bmo'/'naptr'”,因为这些名称不包含在T2中。我想要的是; T3的RowNames来自T1,但T2中没有的名称将被忽略。比如,IceKing的freq仍然是4.或者0,或者其他,只要不包含在T2中的那些RowNames被忽略。如何解决这个问题? –

相关问题