hi,
I have row IDs (or row numbers) of an array. i.e. k=[60:1462:3652136]. I have my YY array [3652500 x 2]. How can I remove the rows of k from YY and store in a different array called XX [2499 x 2].
Can somebody help me with that?
Thanks,
Dumindu.

回答 (1 件)

dpb
dpb 2014 年 5 月 17 日

1 投票

XX=YY(k,:);
I pointed you to this earlier I believe -- look up "logical addressing" in the documentation; it's still a key portion of Matlab syntax.

2 件のコメント

Damith
Damith 2014 年 5 月 17 日
Thanks. But gives me an error "Index exceeds matrix dimensions". First I need to remove rows in k from YY array and then store in XX.
dpb
dpb 2014 年 5 月 17 日
編集済み: dpb 2014 年 5 月 17 日
You've got indices in k that exceed the size(XX,1) so you've got to redefine what you mean.
The length(k) is, as you say, 2499, but from 3652501 on there aren't rows in YY to remove.
I see two ways you can go --
1) If you can live with whatever is in the result array that exists already in YY irrespective of the total elements in XX, then
k=[60:1462:length(YY)];
2) If it's mandatory to have 2499 elements in XX, then
XX=zeros(2499,2); % initialize, any value is ok (use nan(), say)
XX(k,:)=YY(k,:); % k as above
Any similar workaround just so you don't try to reference non-existent elements.

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

カテゴリ

質問済み:

2014 年 5 月 17 日

編集済み:

2014 年 5 月 17 日

Community Treasure Hunt

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

Start Hunting!

Translated by