2017-02-28 3 views
0

내가 개발 한 조닝 공식을 사용하여 Zone Bit Recording으로 포맷 된 하드 디스크 플래터의 섹터를 시각화하고 점 집합을 플롯하여 표시하려고합니다.옥타브 - 시각화를위한 포인트 플로팅

모델 및

디스크 플래터 반경 R의 고리 방정식 0 & R N T W 피치 동심 트랙을 포함 1 (그래서 N T   =   & lt;R 1 0  -  R 0)/W 및 rfloor; 섹터의 반경 N R N   =   R 0   +   ) N * W; 섹터는 외부로 번호가 매겨집니다. 제조 공정 최소 반경 비트 피치 L B 따라서 최소 반경 섹터 피치 L에게 S   =   8 * L B * ( S   허용 +   E) ( S을 512 바이트로 간주하십시오). L S 반드시 는 R 0는 (최 트랙, 즉) 섹터의 최소 개수가 실제로 N S0   =   및 lfloor이다 분할되지 않기 때문에; R 0/ L S 및 rfloor가 ;, 따라서 실제 최소 섹터 피치 L이다 S0 =   R 0/ N S  .

주요 아이디어는 바깥쪽으로 갈 때, 트랙 N TZ의 모든 특정 수의, 원주 트랙에 섹터를 추가하고 여전히 최소한 위의 새 비트 피치를 유지하기에 충분히 큰되고 있다는 것입니다.이것은

N 로 TZ = ⌈ L을 발현 S0/이 차례로 N Z 존의 수를 계산하는 허용

W

로서

N z = N ⌈ T/N TZ ⌉,

트랙 존 N Z

같은 ( N) = lfloor; N/ N TZ 및 rfloor ;,

트랙상의 섹터들의 수 N 같은

N S ( N) = N S0 + Z ( N)

,210

코드

스크립트의이 섹션은 플로팅에 이전 식의 상당히 직접 번역 : 그것은 항상 극성 그래프에 뭔가를 반환하지 않는, 때로는 옥타브가 정지

hold on; axis("equal"); 
parfor z = 0:NZ 
    NS = NS0 + z; 
    G = 2*pi/NS:2*pi/NS:2*pi; 
    R(1:NS) = [25 + W.*z.*TZ:W:25 + W.*TZ.*(z+1)]; 
    polar(G,R,'.r'); 
end 
hold off; 

/큰 입력에 충돌합니다.

내 주된 문제점은 RG에 같은 수의 요소가 있어야한다는 사실과 함께 이것을 최적화하기 위해 옥타브의 행렬에 익숙하지 않다는 것입니다. R(1:NF)을 사용하여 초기화하는 것은 이미 나를 이해하는 큰 도약이었다. Octave/Gnuplot은이 스크립트가 생성하게 될 수백만 (잠재적으로 수억) 개의 포인트를 처리 할 수 ​​있지만 효율적인 방법으로 그렇게하는 것은 저 밖에 있습니다.

This is an example of what the result should look like.

업데이트 :도 작동하지 않습니다 위의 코드를 깨달았다. 합리적인 출력을 생성하고 보수적 인 입력에서 충돌하지 않지만 정확한 플롯을 생성하지 않는 업데이트 된 버전이 있습니다.

for z = 0:NZ 
    NF = NFm + z; 
    G(1:TZ,1:NF) = 2*pi*ones(TZ,1)*[1:NF]/NF; 
    R(1:TZ,1:NF) = (25 + W*(z*TZ+[1:TZ]'))*ones(1,NF); 
    polar(G,R,'.r'); 
    clear R G; 
end 
+0

마지막 지점에 관련됨 : http://meta.stackexchange.com/q/291609/346663 –

+0

@MadPhysicist thanks –

+0

문제 없습니다. Imgur는 이제 괜찮습니다. 그래서 나는 당신을 위해 이미지를 편집했습니다. –

답변

0

그것은 코드가 옳았습니다 밝혀 :

hold on; axis("equal"); 
for z = 0:NZ 
    NF = NFm + z; 
    G(1:TZ,1:NF) = 2*pi*ones(TZ,1)*[1:NF]/NF; 
    R(1:TZ,1:NF) = 25 + W*(z*TZ+[1:TZ]'*ones(1,NF)); 
    polar(G,R,'.r'); 
    clear R G; 
end 
hold off; 

참고 처음에 hold on;. 그래프를 다시 그릴 때마다 동일한 스크립트를 몇 번 실행하여 이전의 잘못된 결과를 가져 왔습니다.

이 코드는 매트릭스 연산자와 색인 생성을 시도하고 여러 소스 (읽기 : 많은 소스)를 읽은 후에도 저에게 썼습니다.

도덕 : 결코 너무 많이 연구 할 수 없습니다.