2017-02-28 7 views
0

Zone Bit Recordingでフォーマットされたハードディスクプラッタのセクタを、私が開発したゾーニング式を使用して視覚化したい点群をプロットします。オクターブ - 視覚化のためのポイントプロットの最適化

モデル&

ディスクプラッタが半径 Rの環である方程式 & R N T Wピッチ同心トラックを含む、(SO N T   =  < R  から  R)/ W&rfloor。セクタの半径 N R N   =   R   +   N * W。セクタは外側に番号が付けられます。製造プロセスは、従って、最小ラジアルセクタピッチ L S   =   8 * L B *( S   +最小ラジアルビットピッチ L Bを可能にします  E)( Sを512バイトとみなす)。 L Sは必ずしも Rを分割しないので、(すなわち、最内周トラック上の)セクタの最小数は、実際に N S0   =  &lfloorあります。 R/ L S&rfloor ;,従って実際の最小セクタピッチ L S0ある   =   R/ N S

主なアイデアは、外側に行くとき、トラック N TZのすべての特定の数は、円周がトラックに部門を追加し、まだ最低限の上に新しいビットピッチを維持するのに十分に大きくなる、ということです。

N TZ = ⌈ L S0/ W

これは順番に

としてゾーン N Zの数を計算することができ、これは、発現されます

N Z = ⌈ N T/ N TZ ⌉、

トラックのゾーン N Z

として N)=&lfloor。 N/ N TZ&rfloor ;,

トラック上のセクタの数 Nとして

N S N)= N S0 + Z N

コード

スクリプトのこのセクションでは、プロットの中に、前の式のかなり直接的な翻訳である:

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; 

それは常に極座標グラフで何かを返さない、そして時にはOctaveはフリーズ/大きな入力でクラッシュする

私の主な問題は、RGの要素数が同じでなければならないということと、これを最適化するためにOctaveの行列に慣れていないことです。 R(1:NF)を使用して初期化することは、既に私の理解の大きな飛躍でした。私はOctave/Gnuplotがこのスクリプトが生成する数百万(潜在的には数億)のポイントを処理することができると確信していますが、それを効率的に行うことは私を超えています。

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

UPDATE:私は上記のコードでも動作しません実現。ここでは合理的な出力を生成し、控えめな入力ではクラッシュしないが、正確なプロットを生成しない更新バージョンがあります。

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ありがとう –

+0

問題はありません。 Imgurは今はOKなので、私は先に進み、あなたのためにイメージを編集しました。 –

答えて

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;先頭に。私はグラフが毎回再描画されていると仮定して同じスクリプトを数回実行し、前回の誤った結果を引き出しました。

このコードは、私自身が行列演算子とインデックスを試してみた後、いくつかの(多くの読まれた)ソースを読んだ後に私によって書かれました。

モラル:決してあまり研究することはできません。

関連する問題