调整矩阵和匹配数据的大小

时间:2014-04-16 09:51:17

标签: matlab

我有一个名为universe的矩阵,有n行和2列。这个矩阵是书籍的世界。然后我有另一个矩阵,m行(m小于或等于n)和2列。这个矩阵可以被认为是书店。

两个矩阵都包含一个列Book ISIN,所有条目都是唯一的。

修改

请注意,本书ISIN包含字母和数字。

编辑结束

我想要做的是调整我的书店矩阵,以便Book ISIN与我的Universe Matrix中的Book ISIN列完全相同。

最后,我想要书店里的任何书籍ISIN在“已售出总数”列中的值为零。下面右边的最后一个矩阵是我正在寻找的结果。

n >= m

Matrix Universe (n x 2)         Book Store (m x 2)                Result I would like

Book ISIN   Book Name           Book ISIN    Total Sold           Book ISIN    Total Sold
12DE3         ABC               45ES6          3                  12DE3          0
45ES6         DEF               10SX1          9                  45ES6          3
78AQ9         FGH                                                 78AQ9          0 
10SX1         LMN                                                 10SX1          9

1 个答案:

答案 0 :(得分:1)

<强>代码

%%// Given data
universe  = {
    '12DE3' 'ABC';
    '45ES6' 'DEF';
    '78AQ9' 'FGH';
    '10SX1' 'LMN'}
store = {
    '10SX1' '9';
    '45ES6' '3'}

%%// Detect the row numbers of `universe` where data from first column 
%%// of `store` is present in first column of `universe`
[true_pos,pos1] = ismember(universe(:,1),store(:,1));

%%// Final output which is same as universe array 
%%// but second is modified based on store
store_mod = universe;
store_mod(:,2)={'0'};
store_mod(true_pos,2) = store(pos1(pos1~=0),2)

<强>输出

store_mod = 

    '12DE3'    '0'
    '45ES6'    '3'
    '78AQ9'    '0'
    '10SX1'    '9'