1

slice円筒グリッドに入力データがあり、MATLABを使用してそれらをプロットしたいと考えています。これを行うには、まず を使用して参照座標をデカルト座標に変換しpol2cartます。

r   = linspace(1,4,4);
phi = linspace(0,2*pi,10);
z   = linspace(1,3,3);

[rmesh,phimesh,zmesh]=meshgrid(r,phi,z)
[xmesh,ymesh,zmesh]=pol2cart(phimesh,rmesh,zmesh)

座標行列が正しく順序付けられていないため、slice現在 (たとえば)を使用するとエラーがスローされます ( )slice(xmesh,ymesh,zmesh,ones(10,4,3),2,2,2)Input grid is not a valid MESHGRID.

行列を変更してプロット可能な結果を​​得るにはどうすればよいですか?

4

2 に答える 2

2

残念ながら、円柱座標で指定されたデータをスライスで使用することはできません。

matlab のドキュメントから:

slice(X,Y,Z,V,sx,sy,sz) draws slices of the volume V. X, Y, and Z are three-dimensional arrays specifying the coordinates for V.
X, Y, and Z must be monotonic and orthogonally spaced (as if produced by the function meshgrid).

あなたができることは、使用することですgriddata

以下に例を示します。

    r = linspace(1,4,4);
    phi = linspace(0,2*pi,10);
    z   = linspace(1,3,3);
    data = repmat(linspace(1,0,4),[10,1,3]);

    [rmesh,phimesh,zmesh]=meshgrid(r,phi,z);
    [xmesh,ymesh,zmesh]=pol2cart(phimesh,rmesh,zmesh);

    [xg, yg, zg] = meshgrid(linspace(-4,4,50),linspace(-4,4,50),linspace(1,3,3));
    gdata = griddata(xmesh,ymesh,zmesh,data,xg,yg,zg);

    slice(xg,yg,zg,gdata,2,2,2)

持っているデータの種類と、「範囲外」のデータを表示しないことがどれほど重要であるかに応じて (つまり、例に従って: 半径が 1 より小さいか 4 より大きい)、次を追加してデータを非表示にすることができます。はあなたの関心の範囲外です:

rg = sqrt(xg.^2+yg.^2);
gdataNaN = gdata;
gdataNaN(rg<min(r)) = NaN;
gdataNaN(rg>max(r)) = NaN;

figure
slice(xg,yg,zg,gdataNaN,2,2,2)

それだけでは不十分な場合は、独自のsliceメソッドを実装する (基本的には griddata メソッドを使用する) か、matlab central fileexchange を参照する必要があります。私はそれをテストしていませんが、MRI 画像を分析するためのツールがうまくいくかもしれません (たとえば、これを確認してください: http://www.mathworks.com/matlabcentral/fileexchange/27983-3d-slicer )。

編集: http://www.mathworks.com/matlabcentral/fileexchange/30147-smartslice-and-igslice これは、同じ問題を抱えている人によって開発されたようです。

于 2013-01-14T13:22:57.720 に答える
0

デカルト座標でメッシュグリッドを呼び出すことはできますか?

r   = linspace(1,4,4);
phi = linspace(0,2*pi,10);
z   = linspace(1,3,3);

[x, y] = pol2cart(r,phi);

[xmesh,ymesh,zmesh]=meshgrid(x, y, z);

[ymesh,xmesh,zmesh]=meshgrid(x, y, z);ところで、アプリケーションにとってより理にかなっていることがわかる場合があります。

于 2013-01-14T10:41:03.780 に答える