我想通過繪製一組點來顯示用Zone Bit Recording格式化的硬盤盤片的扇區,使用我開發的分區公式。倍頻程 - 可視化優化點繪圖
模型&方程
的盤片是半徑 R的環 & - [R,含有ÑŤ用瀝青同心磁道W¯¯(這樣 N T = ⌊( R - R)/ W⌋和扇形體的半徑Ñ - [R Ñ = - [R + W¯¯ * Ñ);這些部門被編號向外。製造過程中允許的最小徑向位間距大號乙,因此最小徑向扇區間距大號小號 = 8 * 大號乙 *(小號 + E)(考慮 S爲512字節)。因爲大號小號不一定劃分 - [R,扇區的最小數(即最內層軌道上)實際上Ñ是S0 = ⌊ - [R/大號小號&rfloor ;,因此實際最低扇區間距爲大號 S0 = - [R/Ñ小號。
主要的想法是,要向外時,軌道ñ TZ的每一定數量,周長變得足夠大到一個部門增加軌道,仍然保持新的位間距最小以上。這被表示爲
Ñ TZ = ⌈ 大號 S0/W¯¯ ⌉
這又允許計算區域數ÑŽ作爲
N Z = ⌈ ÑŤ/Ñ TZ ⌉,
磁道的區Ñ作爲
ž(Ñ)=⌊ Ñ/Ñ TZ&rfloor ;,
Ñ作爲軌道的扇區數
Ñ小號(Ñ)= Ñ 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;
它並不總是在極線圖回報的東西,有時八度凍結/在較大的輸入上崩潰。
我的主要問題是,我不熟悉不夠用八度矩陣來優化這個(我把我對C和彙編的牙齒),與事實R
和G
必須有相同數目的元素一起。初始化使用R(1:NF)
對我來說已經是一個巨大的飛躍。我確信Octave/Gnuplot能夠處理這個腳本產生的數百萬(可能是數億個)點數,但告訴它以有效的方式這樣做是超越我的。
更新:我意識到上面的代碼甚至不工作。這是一個更新的版本,可以生成合理的輸出,並且不會在保守輸入中崩潰,但仍不會產生確切的圖表。
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現在好了,所以我繼續爲你編輯圖像。 –