2016-06-20 9 views
0

В Matlab у меня есть 2 таблицы, 1 таблица содержит все остальные значения таблиц. Первая таблица называется T1Как вычислять значения из таблиц, основанных на именах строк в Matlab

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) 

Как использовать значения из Т2 в Т1 и печати, как это:

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

пример: Я хочу взять RowNames из T1 в T2, но когда я это сделаю, появляется сообщение «Unrecognized row name« marceline »/« iceking »/ 'bmo'/'naptr', потому что эти имена arent содержат в T2. Чего я хочу; RowNames T3 от T1, но имена, которые arent в T2 игнорируются. Например, частота IceKing по-прежнему равна 4. Или 0 или что-то еще, если те RowNames, которые arent содержат в T2, игнорируются. Как это решить? –

 Смежные вопросы

  • Нет связанных вопросов^_^