How do I pull data from two different matrices to form a new matrix?

Hi,
I have two different 30 x 10 matrixes (d1 and d2) that I am trying to pull rows from and only want a specific row from each of them to form a new matrix. The rows that I want are specified in another 30x1 matrix (I) with values of only 1's and 2's depicting the matrix I need to pull from.
I know i could pull one row of a specified matrix with the following command:
dtest=d1(I(1),:)
Unfortunately, I want to use my I matrix to select d1 or d2 in the above command.

 採用された回答

Walter Roberson
Walter Roberson 2016 年 11 月 20 日

0 投票

d12 = cat(3, d1, d2);
[r, c] = size(d1);
dtest = d12( sub2ind(size(d12),repmat((1:r).',1,c),repmat(1:c,r,1),repmat(I,1,c)) );

その他の回答 (1 件)

Roger Stafford
Roger Stafford 2016 年 11 月 20 日
編集済み: Roger Stafford 2016 年 11 月 21 日

1 投票

p = repmat(I==1,1,10); <-- Corrected
D = p.*D1+(1-p).*D2; % <-- The desired result

2 件のコメント

Walter Roberson
Walter Roberson 2016 年 11 月 20 日
I think your repmat() is off there; with a single count you are asking for repeating 10 horizontally and 10 vertically.
Roger Stafford
Roger Stafford 2016 年 11 月 20 日
Oops, you're right Walter. It should be
p = repmat(I==1,1,10);

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by