0

Matlab には 2 つのテーブルがあり、1 つのテーブルには他のすべてのテーブルの値が含まれています。最初のテーブルの名前は T1

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

1 に答える 1

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

(必要に応じて編集済みのままにしておくだけです)

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

テーブルをさらに操作する場合は、matlab ドキュメントの「テーブル内のデータへのアクセス」を読む必要があります。これは、テーブルからデータを抽出するさまざまな方法を学習するのに非常に役立ちます。

于 2016-06-20T08:11:30.613 に答える