2017-01-23 144 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 –