2017-03-09 3 views
-2

Matlab에서 2 차원주기 구조를 각 방향 (즉, b)에 일정한 수의 점을 만들어서 사각형에 b * b 점을 만들기를 원합니다. 우리가 격자 상자의 전체 크기를 L과 같다고하면 어떻게 할 수 있습니까? 짧은 b를 위해, 나는 그것을 손으로 할 수있다. 예를 들어 B = 2, L = 25 :matlab에 2 차원 격자 만들기

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

하지만 그것은 ㄱ의 크고 다른 난의를 위해 어떻게 할 수 있습니까?

답변을 바탕으로 질문이 명확하지 않다고 생각합니다. 그래서 또 다른 예를 추가 내가 그것을 아래 그림에 표시됩니다 (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

2 차원주기 구조를 만들고 싶습니다. @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으로 시작하려면 끝 조건 l-epsilon에 b + 1 점이 없으면됩니다. 마지막 점과 같이 가장자리에서 멀리 떨어지게하기 위해서는 분명히 가운데에 놓아야합니다. 그래서 l/b/2입니다.

다음 쪽에서는 l을 변수로 사용하지 마십시오. 그것은 1과 너무 비슷합니다.

+0

미러 경계 조건이 없습니다. 나는 격자에서 2 차원으로 위치의 위치를 ​​찾고 싶다. –

+0

답변이 잘못되었습니다. 길이가 l 인 사각형에서 b * b 점을 원합니다. –

+0

@saranj 네, 저는 x와 y에 대한 샘플 출력과 일치하는 비슷한 패턴의 것을 만들었습니다. 네가 다른 것을 필요로한다는 것을 어떻게 알았 겠니? 귀하의 질문을 수정하고 나는 내 대답을 수정하는 것을 고려할 것입니다. –

관련 문제