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はフリーズ/大きな入力でクラッシュする
私の主な問題は、R
とG
の要素数が同じでなければならないということと、これを最適化するためにOctaveの行列に慣れていないことです。 R(1:NF)
を使用して初期化することは、既に私の理解の大きな飛躍でした。私はOctave/Gnuplotがこのスクリプトが生成する数百万(潜在的には数億)のポイントを処理することができると確信していますが、それを効率的に行うことは私を超えています。
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
最後のポイントに関連する:http://meta.stackexchange.com/q/291609/346663 –
@MadPhysicistありがとう –
問題はありません。 Imgurは今はOKなので、私は先に進み、あなたのためにイメージを編集しました。 –