0

次のデータをグラフ化しています。

a=[...
    0.1,  0.7,   0.00284643369242828;...
    0.1,  0.71,  0.00284643369242828;...]

列 1 が約 10 を超えることはなく、列 2 が 0.7 から 1 になるようにします。

列 3 は問題ないようです

それを使用してサーフェスをチャート化するsurf(a)と、次のようになります。 ここに画像の説明を入力

xとyがどうあるべきかを適切に考慮していないようです。

何か変に見える?

4

1 に答える 1

0

高さの列を独自の長方形の行列 Z に分割しsurf(Z)、行列内の位置を基準にして各点をプロットするために使用します (したがって、x 軸と y 軸はスケーリングされません)。または、目的の x 座標と y 座標を独自のベクトルに入れ、行列 Z をプロットすることができます (x が N の場合、N のすべての i と M の j に対してすべての点 (xi、yj) で定義されます)。要素の長さと y は M 要素の長さ) を使用しsurf(x,y,Z)ます。

x = 0.1:0.1:10;    % or whatever increment you need
y = 0.7:0.01:1;    % or whatever increment you need
Z = zeros(length(x),length(y);   % initialized to the correct size, fill with data

Z データを再生成して、次元が (x の要素) x (y の要素) の長方形の行列になるようにする必要があると思います。

編集: データを再作成する必要はありません。xにn個の一意の要素があり、yにm個の一意の要素があることがわかっている場合は、次を使用できます。

X = reshape(data(:,1),m,n);
Y = reshape(data(:,2),m,n);
Z = reshape(data(:,3),m,n);
surf(X,Y,Z);

そして、それはあなたが探しているものをあなたに与えるはずです。

于 2013-06-09T17:29:26.837 に答える