#author("2018-01-11T00:50:47+09:00","default:Miyashita","Miyashita") #author("2018-07-25T20:55:31+09:00","default:Miyashita","Miyashita") *i,j,zの3列ベクトルからメッシュデータに変換する [#xc0756e7] i,j,zのベクトルが結合したn×3の行列 i j z 1 1 0.0 1 2 0.0 .. .. .. のような変数があるとする.このzの値を z(i,j) のようにメッシュデータに格納したい.~ のような変数があるとする.この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 #codeprettify(lang-matlab){{ 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)); #codeprettify(lang-matlab){{ data = sparse(vecdata(k,1),vecdata(k,2),vecdata(k,3)); }} 空白部分がNaNでなくて良い場合は,メモリ消費を抑られるのでsparseを使う.