i,j,zの3列ベクトルからメッシュデータに変換する

i,j,zのベクトルが結合したn×3の行列

i  j   z
1  1  0.0
1  2  0.0
.. ..  ..

のような変数があるとする.このzの値を

z(i,j)

のようにメッシュデータに格納したい.
全てのi,jデータがあれば,reshapeで変換可能.
メッシュ上のデータに欠損があったり,並びが不規則な場合にはreshapeを使うことは出来ない.
ここで,vecdataはi,j,zのn×3の行列とし,dataという変数にny行nx列の行列をしまい込むことを考える.

data = sparse(vecdata(k,1),vecdata(k,2),vecdata(k,3));
matrixdata = zeros(ny,nx);
matrixdata(:) = NaN;
for k = 1:size(vecdata,1)
    data(vecdata(k,1),vecdata(k,2)) = vecdata(k,3);
end

また,スパース行列を作成するsparseでも可.こちらの方が簡単.

 data = sparse(vecdata(k,1),vecdata(k,2),vecdata(k,3));

空白部分がNaNでなくて良い場合は,メモリ消費を抑られるのでsparseを使う.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2017-12-20 (Wed) 07:31:21 (59d)