2017-04-24 9 views
0

フォルダ内に複数の画像があり、画像ごとにデータ(ピクセル値)を行ベクトルとして保存します。私はそれらを行ベクトルに格納した後、これらの行ベクトルを1つの多次元配列として組み合わせることができます。例えば第1の画像のデータは第1の行に格納され、第2の画像のデータは第2の行に格納され、以下同様である。そして、私が特定の画像データにアクセスしたいときはいつでも、私は第3の画像を望んでいると言いましょう。私はこのような何かをすることができますrace(3,:)画像データを行ベクトルとして保存する

私は現在、エラーを取得しています:

Dimensions of matrices being concatenated are not consistent.

エラーは私がimagevec = I(:)'が行ベクトルに行列を変換していない場合を除き、これを修正する方法で失われていますここrace = [race; imagevec]を発生します。

+1

元の画像のサイズが同じではないようです。 'I = imread(filename);の後に' disp(size(I)) 'を実行して、それが問題かどうかを確認してください。 – user2999345

+0

これを修正する方法は、行列を連結してスクリプトを実行するブレークポイントを設定することです。次に、各繰り返しで2つの行列の次元が一致しなくなるまで次元をチェックします。次に、あなたにエラーとその理由を示すイメージが見つかりました。 – beaker

+0

あなたはどちらも正しいです、私は彼らが異なる次元のものであることがわかります。何らかの理由で私はそれを考慮に入れなかった。それらをすべて同じ次元にする最良の方法は何ですか? – Jam1

答えて

1

の代わりに、行列のセル配列を使用するには、あなたのイメージのサイズが異なる場合でも、このようにインデックスにあなたをできるようになります。

同じ構造内にすべてを格納するために行ベクトルに変換する必要はありません。

次に、何らかの操作を実行する場合は、単にセル配列にインデックスを付けることができます。必要に応じて、次のように行ベクトルに変換することもできます。

thisImage = race{3}(:)';

1

結果を格納するために行列を使用する場合、行列のすべての行は同じ長さでなければなりません。

セル配列は要素が同じ型/サイズである必要はありませんが、配列と似ています。

セル配列を使用して、探しているものを達成できます。まず、にレースを初期化しますしてみてくださいそして、

race = {}; 

race = {race{:}, imagevec}; 
+0

これは「セル以外の配列オブジェクトからのセル内容参照」というエラーです。 – Jam1

+0

'race'をセル配列として初期化する必要があります:' race = []; 'の代わりに' race = {}; ' – beaker

関連する問題