2009-10-12 3 views
0

각 차원 및 매개 변수 '델타'에 따라 N 차원 벡터, X 및 'n'등거리 점이 있습니다. 하이퍼 큐브의 중앙에 벡터 X로 정의 된 하이퍼 큐브로 둘러싸인 n^N 벡터의 합계를 찾고 하이퍼 큐브의 각면은 크기 2 * 델타를 갖는 방법이 필요합니다. 예를 들어사용자 정의 된 하이퍼 큐브로 둘러싸인 점

(* 델타 2)

는 N = 3의 경우를 고려하고 있으므로 크기의 입방체를 둘러싸는 각각의 차원에 따른 포인트 X.

------------\ 
|\--------|--\ 
| | X | | 
----------- | 
\ |_2*del___\| 

I가 'N '포인트. 그래서 저는 X 주위에 총 3 개의 벡터가 있습니다. 모든 벡터를 찾아야합니다. 같은 표준 알고리즘/방법이 있습니까? 유사한 작업을 수행했다면 제안하십시오.

문제가 명확하지 않으면 알려주십시오.

이것은 내가보고있는 것입니다. 하나의 차원을 고려할 때, 한 변의 길이는 2 * 델타이고 나는 나눗셈을가집니다. 따라서 각 하위 구분은 크기 (2 * 델타/n)입니다. 그래서 나는 (x가 측면의 중간 점이기 때문에) (x-delta) 인 원점으로 이동하고 {(x-delta) + 1 * (2 * delta/n)만큼 'n'점을 얻습니다. (x-delta) + 2 * (2 * delta/n) .... + (x-delta) + 1 * (n * delta/n)}이다. 나는 모든 N 차원에 대해 이것을 수행하고 좌표의 순열을 취한다. 그런 식으로 모든 포인트를 얻었습니다.

내가 충분히 질문을 이해하지 못했다,

+2

질문 문구가 명확하지 않습니다. 귀하의 예제에서 델타 = 1.0 및 n = 3이라고 가정하십시오.당신이 찾는 벡터가 X + (-1, -1, -1), X + (- 1, -1,0), X + (- 1, -1,1), X + , 0, -1), ..., X + (1,1,1)? – Beta

답변

0

좋아 (I이를 닫 싶습니다). N 차원의 하이퍼 큐브에서 한 점에 대해 총 2^(N-1)*N 개의 "선들"이 있습니다.

n = 10; 
delta = 10; 
N = 3; 
step = (2*delta)/(n-1); 
P = zeros(n,N,N); 
X = [20 30 25]; 

for line_dim = 1:N 
for point = 1:n 
    for point_dim = 1:N 

    if(point_dim ~= line_dim) 
    P(point,point_dim,line_dim) = X(point_dim)-delta; 
    else 
    P(point,point_dim,line_dim) = X(point_dim)-delta+step*(point-1); 
    end 

    end 
end 
end 

:

그냥 축과 같이 라인에 n 개의 지점을 만들려하지만, 원점에서 델타의 거리로 환산하면

, 여기 (명확성을 위해, 잘못 작성된) MATLAB 코드 일부입니다 큐브에 대한 코드이지만 모든 N에서 작동해야합니다.

  1. 축에 등거리 점을 그립니다.
  2. 는 (X-델타)에 의해 축을 번역

디스플레이 : 내가 정확하게 문제를 이해한다면

% Display stuff  
PP = reshape(permute(P,[1 3 2]),[n*N N]); 
plot3(X(1),X(2),X(3),'r*',PP(:,1),PP(:,2),PP(:,3),'.') 
axis([0 Inf 0 Inf 0 Inf]); 
grid on; 
+0

감사합니다 :) 나는 단지 내 요구 사항에 대해 혼란스러워서 단순히 매우 복잡한 질문을했습니다! –

+0

그래서이게 당신이 찾고 있던거야? – Jacob

+0

ImageShack이 이미지를 삭제하고 광고로 교체 했으므로 귀하의 게시물에서 이미지를 삭제해야했습니다. 자세한 내용은 http://meta.stackexchange.com/q/263771/215468을 참조하십시오. 가능한 경우 다시 업로드하는 것이 좋습니다. 감사! – Undo

1

, 당신은, 포인트 X 중심 축 정렬 하이퍼 큐브를 가지고 이 하이퍼 큐브의 내부를 하이퍼 큐브의 좌표계에있는 격자 점과 간격이있는 일반 격자로 세분했습니다.

하자 X = (나에게 예를 추가 할 수 있습니다 : 당신이해야 할 모든

편집 돌아가서 X로 그들을 변환 한 후 격자 점의 각 벡터를 발견하고, X = 0을 할 수있다 5,5,5), 델타 = 1 및 n = 3

다음에 x를 원점으로 이동하면 격자 점은 (-1, -1, -1), (0, -1, -1) (4, 4, 4), (5, 4, 4), (6, 4, 4) 등이 뒤를 뒤따 랐을 때, .

관련 문제