【问题标题】:Matlab 2D plot — display axis in binaryMatlab 2D plot - 以二进制显示轴
【发布时间】:2017-06-07 22:18:42
【问题描述】:

我有一个正自然数向量,我使用典型的 plot() 函数在 Matlab 中绘制它。这是一个示例图:

但是,我需要查看以二进制显示的矢量(y 轴)。有没有办法以二进制(radix-2)更改轴显示?我尝试使用 dec2bin,但它只将整数转换为无法绘制的字符串。

【问题讨论】:

    标签: matlab plot binary 2d matlab-figure


    【解决方案1】:

    这个怎么样:

    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)));
    

    它在缩放之前将轴重置为十进制,然后在缩放之后转换回二进制。

    【讨论】:

    • 它有效,但仍然存在问题。它显示二进制,但值错误。例如。它不显示点 766,而是显示 750。偏移 16?但是,在点 754 显示 760。似乎存在一些与数字相关的偏移量。
    • 嗯,这很奇怪。你确定吗?它似乎对我有用,这是我同时展示两者的示例:i.stack.imgur.com/RSG6s.png
    • 我意识到它只有在您不尝试缩放时才有效。一旦我放大它就会出错。这是一个示例图:drive.google.com/file/d/0B5A_hdYOfvtLWGktbmJnRlowNjQ/…
    • 当然,如果你缩放它会改变 YTicks。因此,您需要在每次缩放后再次运行该命令。可以使用事件处理程序自动执行此过程。我编辑了我的解决方案。希望对您有所帮助。
    猜你喜欢
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 2012-02-15
    • 2019-07-15
    相关资源
    最近更新 更多