2017-03-09 11 views
-2

Matlabに2d周期構造を作成し、各方向に一定数の点(たとえばb)をつけて、正方形にb * b点があるようにしたいとします。格子箱の総サイズをLとすると、どうすればいいのですか?短いbのために、私は手でそれをすることができます。たとえば、b = 2、l = 25の場合:matlabで2dラティスを作成する

x = [6.25;18.75;18.75;6.25]; 
y = [6.25;18.75;6.25;18.75]; 

しかし、私は大きなbと異なるlのためにそれを行うことはできますか?

答えに基づいて、私は質問がはっきりしないと思います。だから私は、別の例を追加します。 私はそれが下の画像に示されて27に等しい長さでsqureに3^2ポイントを選択します。この場合

enter image description here

、答えは:

x= [4.5;13.5;22.5;4.5;13.5;22.5;4.5;13.5;22.5] %x component of position of points 
y= [22.5;22.5;22.5;13.5;13.5;13.5;4.5;4.5;4.5] %y component of position of points 
+1

'x'と' y'がどのように計算されるのか分かりません。閉形式とは何ですか? – rayryeng

+0

| x_2-x_1 | = | l + x_1-x_2 |となるようにそれらを選択します。 yと同じです... @rayryeng –

+0

2d周期構造を作成したいです。@rayryeng –

答えて

0

あなたは何をしたいのですか?

oneLattice = (l/(2*b) : l/b : l); 
x = repmat(oneLattice, 1, b)'; % Make a column vector. 
y = repmat(oneLattice, b, 1); % will be a matrix. You can use it the same as x - linear indexing. 
y = y(:); % To make it in a single column. 

古いバージョン:

私はステップを推定は、賢明な、非常に一般的である第一の点と最後の対称と全ての点の間の同じ距離を有するように選択しました。そして、xは境界条件を反映しているように見えますが、yでは周期的です(次回に伝える必要があります)。

oneLattice = (l/(2*b) : l/b : l)'; 
x = [oneLattice; oneLattice(end:-1:1)]; 
y = [oneLattice; oneLattice]; 

簡単な説明:ポイント間のステップは、格子l上のbポイントを持つl/bです。 0 +イプシロンとl/bの間の最初の点については何も動作します。 (0から始めるには、b + 1ポイントを持たないために終了条件l-epsilonが必要です)。最後のポイントと同じように、中央に配置するには、明らかに中央に配置する必要があります(l/b/2)。

次回は、lを変数として使用しないようにしてください。それは1に似ています。

+0

ミラー境界条件はありません。私は格子内のサイトの位置を2Dで探したい。 –

+0

あなたの答えは間違っています。長さlの正方形の中にb * b点が必要です。 –

+0

@ saranjええ、私はxとyのサンプル出力と一致し、同様のパターンであるものを作りました。あなたは何か他のことが必要であることを私はどのように知っていますか?あなたの質問を修正し、私は私の答えを修正することを検討します。 –

関連する問題