2016-10-10 20 views
0

だから私はxy座標の行列を構築する必要があります。私は、vx=0:6000;yと呼ばれる1つのマトリックスに格納されたxVy=repmat(300,1,6000);に格納しています。2つのベクトルを使用して行列を作成するにはどうすればよいですか?

xの値は0,1,2,...,5999,6000です。 yの値は300,300,...,300,300です。

上記のx,y座標を持つ「ベクトル」を作成するにはどうすればよいですか?

[(0,300);(1,300);...;(5999,300);(6000,300)]のようになります。

これを終えると、時間の経過とともに距離グラフを作成するために、別の固定小数点x,y(上のベクトル6000回)と上のベクトルの間の距離を求めたいと思っています。

ありがとうございました!

答えて

4

あなたはちょうどあなたが別のポイントと、この2次元アレイ内のすべての点との間の距離を計算したい場合は、次の操作を行うことができ[]

X = [Vx(:), Vy(:)]; 

と水平連結を使用することができます。

point = [10, 100]; 
distances = sqrt(sum(bsxfun(@minus, X, point).^2, 2)); 

あなたがR2016b以上を持っていれば、簡単に行うことができます

distances = sqrt(sum((X - point).^2, 2)); 
+0

@ user3105028 ':'は書いたとおりに使用します。これは、 'x'と' y'を強制的に列ベクトルにします。 – Suever

+0

>> p1 = [Vx(:)、Vy(:)] horzcatを使用したエラー 連結されている行列の次元が一貫していません。 – belgarion

+0

@ user3105028あなたが書いた最後のものが必要ですが、vxに6001個の要素があり、vyに6000個の要素があります – Suever

3

A(私の意見では)もう少しエレガントな選択肢は以下の通りです:

Vx = (0:1:6000).'; 
C = [Vx 0*Vx+300]; % Just a trick to avoid the overly verbose `repmat`. 

p = [10,100];  % Define some point of reference. 
d = pdist2(C,p); % The default "distance type" is 'euclidian' - which is what you need. 

これは、MATLAB 2010Aで導入pdist2機能を、使用し、統計および機械学習ツールボックスが必要です。

関連する問題