質問

ちゃんと2次元マトリクスとして抽出15の異なる100x100部品です。私は二つのベクトルx,yの左上の指標の部品が保存されます。利用していて思ったこと。

result = cam1(x(1:end):(x(1:end)+99), y(1:end):(y(1:end)+99));

ものに応じて変更することが可能で100x100マトリクスの代わりに15x100x100.なぜですか?

ただ、それが容易に行えるようになった。をループではできないので使用を許可ループでの画像処理行使).他possbilityする全15ラインだけでなく、そのような醜い.

しいエレガントな解決方法?感謝。

役に立ちましたか?

解決

多くの方がいいタイルです。最ソリューションの拡大ベクトル xy 大型の行列の指数が使用の機能 REPMAT, BSXFUN, や SUB2IND.良いチュートリアルのためのマトリクス指数付けでき こちらの.

しかし、いう充実したプログラムとなってい 優雅 液ことの少ない。使用す 匿名機能 どの機能 ARRAYFUN:

indexFcn = @(r,c) cam1(r:(r+99),c:(c+99));
result = arrayfun(indexFcn,x,y,'UniformOutput',false);
result = cat(3,result{:});

説明:

最初の行を作成します 匿名機能.これは簡単ではなくライン機能を作成することができたインタフェースなので、m-ファイルです。この機能を定義し二つの入力 rc 使用する抽出100-by-100submatrixから cam1.変数 indexFcn 店舗、 機能対応 使用する電話にしてください。値なので注意の cam1 使用する匿名機能 静的.場合においても価値の変動 cam1 の変更に伴い、匿名での機能も利用価値はあった cam1 場の機能が作成されます。

のように指定した場合、呼び出しARRAYFUNに適用される関数の各要素の配列になります。ARRAYFUNループそれぞれのエントリ xy, の価値を indexFcn.の出力が格納され 結果, 15の要素細胞の配列がそれぞれの細胞が含まれて100-by-100で行います。

第三線用の機能を連結の100-by-100の行列100-by-100-by-15で行います。

他のヒント

これは明らかに課題んだの完全な答えです。

する方法は幾つかあるが、今回はインデックスにマトリクス.きい散乱を指標として設定ここでは、モーバイルコンピューティング。この場合は

A = rand(5,6)
A =
      0.81472      0.09754      0.15761      0.14189      0.65574      0.75774
      0.90579       0.2785      0.97059      0.42176     0.035712      0.74313
      0.12699      0.54688      0.95717      0.91574      0.84913      0.39223
      0.91338      0.95751      0.48538      0.79221      0.93399      0.65548
      0.63236      0.96489      0.80028      0.95949      0.67874      0.17119

A(3:4,3:4)

す2x2submatrixらができることを示submatrixとして

reshape(A([13 14 18 19]),[2 2])
ans =
      0.95717      0.91574
      0.48538      0.79221

私が選べるプラグインベースのアーキテクチす。に答える必要がありま報sub2ind.

[I,J] = ndgrid(3:4,3:4);
sub2ind([5 6],I(:),J(:))
ans =
    13
    14
    18
    19

最後なんだかとってもおいしそうにしたい15x100x100配列から抽出した。で構築に必要なインデックス配列からの作品は私を示します。う必要がありま最終的に"カギ不要期間"末尾ので、適切な形状です。

これだけの十分なデータを仕上げるためには宿題も出されたりする。

あなたは困難にすべてのこれまで考えて、これを試してみてください:mat2cell

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top