2017-01-23 142 views
1

我有一個正的自​​然數矢量,我正在使用典型的plot()函數在Matlab中繪圖。下面是一個示例圖:Matlab二維圖 - 二進制顯示軸

Plotting a natural number vector, axis in radix-10, need to display them in radix-2

然而,我需要看到在二進制顯示的向量(y軸)。有沒有辦法改變二進制(基數2)的軸顯示?我嘗試過使用dec2bin,但它只將整數轉換爲無法繪製的字符串。

回答

3

如何:

L = get(gca,'YTickLabel'); 
set(gca,'YTickLabel',cellfun(@(x) dec2bin(str2num(x)),L,'UniformOutput',false)); 

編輯:既然你想放大的能力,這裏有一個方法,使軸縮放:

zh = zoom(gcf); 
set(zh,'ActionPreCallBack',@(source,event,s) set(gca,'YTickLabelMode','auto')) 
set(zh,'ActionPostCallBack',@(source,event,s) set(gca,'YTickLabel',cellfun(@(x) dec2bin(str2num(x)),get(gca,'YTickLabel'),'UniformOutput',false))); 

它重置軸爲十進制在縮放之前,然後在縮放之後將其轉換回二進制。

+0

它的工作原理,但仍有一個問題。它顯示二進制,但錯誤的值。例如。而不是顯示點766,它顯示750.偏移16?但是,在754點,它顯示760.似乎有一些依賴於數字的偏移量。 –

+0

嗯,這很奇怪。你確定?它似乎爲我工作,這裏是一個例子,我展示了兩個:https://i.stack.imgur.com/RSG6s.png – Florian

+0

我意識到它的工作原理只有當你不試圖放大。一旦我放大它就會出錯。以下是一個示例圖:https://drive.google.com/file/d/0B5A_hdYOfvtLWGktbmJnRlowNjQ/view?usp=sharing –