次の問題があります。次のような行列 A(a,b,c) で読み取った実験データを含むテーブルがあります。
4.00000 7.00000 0.09035
4.00000 6.00000 0.02632
4.00000 5.00000 0.01184
4.00000 4.00000 0.30728
4.00000 3.00000 0.16022
4.00000 2.00000 0.01734
3.00000 6.00000 0.05817
3.00000 5.00000 0.02296
3.00000 4.00000 0.00000
3.00000 3.00000 0.22576
3.00000 2.00000 0.08331
3.00000 1.50000 0.00297
2.00000 6.00000 0.00000
2.00000 5.00000 0.05184
2.00000 4.00000 0.01883
2.00000 3.00000 0.00000
2.00000 2.00000 0.10719
2.00000 1.50000 0.06689
私の実際の問題は、メッシュを使用して 3D プロットを行う方法がわからないことです。plot3d() を使用しないと、私には役に立たない曲線しかありません。古い質問に答えたように、解決策は次のようになります。
X = reshape(A(:,1),m,n);
Y = reshape(A(:,2),m,n); % might be reshape(data(:,2),n,m)
Z = reshape(A(:,3),m,n);
mesh(X,Y,Z);
説明付き: この場合、Y に m 個の一意の値があり、X に n 個の一意の値があると仮定しています。メッシュへの呼び出しで、これらを mesh(X',Y',Z) または何かとして転置する必要がある場合があります。そのように。
説明を理解したように、m と n は、3D プロットの x 方向と y 方向のグリッド ポイントの量でなければなりません。私が抱えている問題は、たとえば、x方向の1つのグリッドポイントに対応するy方向のグリッドポイントがポイントごとに変化する可能性があることです。
と
aa=unique(a)
bb=unique(b)
lengthaa=length(aa)
lengthbb=length(bb)
3D プロット (n,m)=((lengthaa),length(bb)) の最終的なグリッド スケールを取得しますが、上記のように A の形状を変更したい場合、もちろん次のようなエラー メッセージが表示されます。
octave:20> x = reshape (A(:,1),clength,dlength)
error: reshape: can't reshape 36x1 array to 6x12 array
そして今、私は何を検索すればよいかさえわからないところまで来ています。助けていただけますか?:)
編集:今、私はさらに一歩進んでいます:with
[aaa,bbb]=meshgrid(aa,bb)
私は自分の斧の正しいスケーリングを持っています。ここで、データを正しい方法で注文する必要があります。
Edit2:問題は、データがないグリッドポイントがあることです。それが理由であり、reshape が機能しないのです。何か助けはありますか?