【问题标题】:How to overload user defined functions in Matlab?如何在 Matlab 中重载用户定义的函数?
【发布时间】:2011-08-27 22:01:55
【问题描述】:

我正在尝试绘制序列,我已经编写了一个函数

function show_seq(seq)
 plot (seq)
end

我现在想重载这个 show_seq 来显示 2 个类似的序列

function show_seq(seq1, seq2)
  plot(seq1,'color','r');
  plot(seq2, 'color', 'b');
end

但这不起作用,有人知道如何在 MATLAB 中重载函数吗?

【问题讨论】:

标签: matlab


【解决方案1】:

如果将重载函数放在优先级更高的路径中,则可以重载自己的函数之一。有关路径优先级的更多详细信息,请参阅this question

但是,在您的情况下,最简单的方法是修改 show_seq 使其接受多个可选输入:

function show_seq(varargin)
  hold on %# make sure subsequent plots don't overwrite the figure
  colors = 'rb'; %# define more colors here, 
                 %# or use distingushable_colors from the
                 %# file exchange, if you want to plot more than two

  %# loop through the inputs and plot
  for iArg = 1:nargin
      plot(varargin{iArg},'color',colors(iArg));
  end
end

【讨论】:

  • 天哪,所以你不能像我目前遇到的所有其他语言那样将这两个重载放在一个文件中吗?
  • @Grzenio:没有技巧,你确实不能将多个独立的函数放在一个文件中。但是,您真的认为为不同的签名多次复制粘贴大部分函数比编写一个可以处理多个签名的函数更容易、更有效吗?
  • 在普通编程语言中,您通常会创建一个函数,其中包含所有可能的参数以及实际实现,以及一些具有更专业参数集的函数,它们只是调整参数,提供一些默认值等. 并通过实现调用该函数。您复制粘贴的主要内容是函数名称...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-10
  • 1970-01-01
相关资源
最近更新 更多