質問: 1, 5, 8, 9, 13, ...... 753, 986, ......1587, 1689, ...... 9850 といった数千以上のidを持つ行だけを抽出したいです。 for文を使わずにスマートに抽出する方法はないでしょうか? ご教示ください。 私の説明に不明な点があれば聞いてください。 よろしくお願いします。
回答: 以下のようなやり方で抽出できます。 ここではidsに抽出したいidを抜粋して[]で括っていますが、実際の数千のidを直書きするか、ファイルから読み取るなどしてみてください。 ids = [1, 5, 8, 9, 13, 9850]; index = test.id == ids; % indexに9853×(idsの要素数)の0 or 1が格納されます。 row = find(sum(index, 2)); % sumで行ごとにマージして9853×1の0 or 1の行列にし、findで非0(1の値)を持つ行数を抽出 extracteddata = test(row, :); % idがidsと一致する行のデータのみ抽出