Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab “违约”;图例“;意外覆盖的函数_Matlab_Path - Fatal编程技术网

Matlab “违约”;图例“;意外覆盖的函数

Matlab “违约”;图例“;意外覆盖的函数,matlab,path,Matlab,Path,我正在使用BNT工具箱,一个用matlab编写的用于贝叶斯网络推理的大型库 我不得不将这个工具箱添加到MATLAB的路径中。但是这样做之后,我就不能再使用默认的legend功能了 我认为这个库可能有自己的legend函数,覆盖了默认函数。如何手动告诉MATLAB我想要的是原始的,而不是新工具箱中的 在Matlab 2018b和2020a中试用 编辑:要复制它,请执行以下操作: 当我运行testscript时,它显示了行和图例 ,这是我说的工具箱。我下载了它,解压缩,然后用Home->Set pa

我正在使用BNT工具箱,一个用matlab编写的用于贝叶斯网络推理的大型库

我不得不将这个工具箱添加到MATLAB的路径中。但是这样做之后,我就不能再使用默认的
legend
功能了

我认为这个库可能有自己的
legend
函数,覆盖了默认函数。如何手动告诉MATLAB我想要的是原始的,而不是新工具箱中的

在Matlab 2018b和2020a中试用

编辑:要复制它,请执行以下操作:

当我运行testscript时,它显示了行和图例

,这是我说的工具箱。我下载了它,解压缩,然后用Home->Set path->add folder with subfolder将它添加到我的路径中

当我现在运行脚本时,它显示的是线条而不是图例

注意:当我尝试另一种绘图方式(参见testscript 2)时,图例再次显示出来。因此,这是一个有效的“变通办法”

Testscript1:(位置:C:\Users\TomDe\Downloads\FullBNT-1.0.7\bnt\own\Testscript1.m)

测试脚本2

% Some other code

tiledlayout(2,1) 
nexttile
plot(inputPath)
hold on
plot(sensorPath)
plot(inputInference)
hold off
title('The Input sequence and sensor readings  ')
legend('Path', 'sensor', 'Inference')

您可以检查函数是否确实如此:

>> which legend -all
掩盖MATLAB自身的功能通常是个坏主意。我强烈建议你首先避免这个问题。创建一个工具箱,并将此工具箱的源代码放在其中


仅出于演示目的,我将演示如何调用真实的
legend.m

>> wd = pwd;
>> cd 'C:\Program Files\MATLAB\R2020a\toolbox\matlab\scribe\'
>> legend(...)
>> cd(wd);

这是MATLAB R2020a安装中文件的位置。

您可以检查函数是否确实如此:

>> which legend -all
掩盖MATLAB自身的功能通常是个坏主意。我强烈建议你首先避免这个问题。创建一个工具箱,并将此工具箱的源代码放在其中


仅出于演示目的,我将演示如何调用真实的
legend.m

>> wd = pwd;
>> cd 'C:\Program Files\MATLAB\R2020a\toolbox\matlab\scribe\'
>> legend(...)
>> cd(wd);

这是MATLAB R2020a安装中文件的位置。

您可以做两件事:

  • 添加BNT工具箱目录时,始终希望使用默认的
    图例,而不是工具箱中的图例:用于调用
    addpath
    ,以便其函数显示在路径的末尾。MATLAB总是通过依次查看路径目录来查找函数,因此路径中较早的目录具有优先权

  • 您希望使用两个版本的
    legend
    ,并选择要使用的版本:编写一个小的支持函数,从路径中删除BTN工具箱,调用
    legend
    ,然后将工具箱添加回。这样的函数如下所示(将其保存为路径中的某个地方的
    original\u legend.m
    ,然后以调用
    legend
    的相同方式使用它,但改用此新名称):

    功能输出=原始图例(varargin)
    rmpath/path/to/bnt/toolbox
    out=图例(varargin{:});
    addpath/path/to/bnt/toolbox
    

  • 您可以做两件事:

  • 添加BNT工具箱目录时,始终希望使用默认的
    图例,而不是工具箱中的图例:用于调用
    addpath
    ,以便其函数显示在路径的末尾。MATLAB总是通过依次查看路径目录来查找函数,因此路径中较早的目录具有优先权

  • 您希望使用两个版本的
    legend
    ,并选择要使用的版本:编写一个小的支持函数,从路径中删除BTN工具箱,调用
    legend
    ,然后将工具箱添加回。这样的函数如下所示(将其保存为路径中的某个地方的
    original\u legend.m
    ,然后以调用
    legend
    的相同方式使用它,但改用此新名称):

    功能输出=原始图例(varargin)
    rmpath/path/to/bnt/toolbox
    out=图例(varargin{:});
    addpath/path/to/bnt/toolbox
    

  • 我真的在找这样的东西。当我运行它时,它只打印:C:\Program Files\MATLAB\R2020a\toolbox\MATLAB\scribe\legend.m(这样做是默认的,工具箱中没有任何内容)。尽管如此,当我运行一个小脚本来显示图例时,它并没有出现。注意:通过从路径中删除工具箱并运行相同的脚本,图例确实会出现。有什么想法吗?@tomdeconck
    当我运行一个小脚本时
    这个脚本做什么?请把它添加到问题中。还有这个脚本的完整路径是什么?@tomdeconck你能告诉我这个工具箱的源代码吗?如果你给我复制步骤,我可以试着复制this@TomDeConinck该工具箱中没有
    legend.m
    。使用
    查找bnt主控名称“legend.m”
    进行检查,因此您的代码一定有问题。当运行
    图例
    未显示的代码时,命令窗口中是否显示任何警告或错误消息?Testscript1完全运行,然后显示图形(无图例)。命令窗口不会抛出错误或警告。我确实在寻找类似这样的东西。当我运行它时,它只打印:C:\Program Files\MATLAB\R2020a\toolbox\MATLAB\scribe\legend.m(这样做是默认的,工具箱中没有任何内容)。尽管如此,当我运行一个小脚本来显示图例时,它并没有出现。注意:通过从路径中删除工具箱并运行相同的脚本,图例确实会出现。有什么想法吗?@tomdeconck
    当我运行一个小脚本时
    这个脚本做什么?请把它添加到问题中。还有这个脚本的完整路径是什么?@tomdeconck你能告诉我这个工具箱的源代码吗?如果你给我复制步骤,我可以试着复制this@TomDeConinck该工具箱中没有
    legend.m
    。使用
    查找bnt主控名称“legend.m”
    进行检查,因此您的代码一定有问题。运行时,命令窗口中是否显示任何警告或错误消息