添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

当我们调用自定义的类成员函数时,可能出现“错误使用......,输入参数太多”的提示。下面对这一情况进行展示并给出我的解决方法,希望能够对你有所帮助。

举一个简单的例子,定义一个person类,其包括ID、age、height、weight成员变量,一个默认构造函数person,一个成员变量设置函数set。其中,有些人对函数set的编写可能是下面这种情况:

classdef person
    properties
        ID;%身份证号码
        age;%年龄
        height;%身高
        weight;%体重
    methods
        function ret = person%初始化类成员
            ret.ID = 20220223;
            ret.age = 25;
            ret.height = 165;
            ret.weight = 106;
        function ret = set(ID,age,height,weight)%设置类对象成员的值
            ret.ID = ID;
            ret.age = age;
            ret.height = height;
            ret.weight = weight;

理所当然的,我们在调用时会使用如下形式:

instance = person;%创建一个实例并初始化对象成员
ID = 20220224;
age = 25;
height = 165;
weight = 105;
instance = instance.set(ID,age,height,weight);%设置对象成员

但是,上面这种调用会出现“输入参数太多”的错误提示。这是由于调用类的成员函数时,默认会将实例instance传入参数,所以实际传入的参数类型有person类变量,然后才是ID、age、height、weight。然而我们定义的类中成员函数set只有4个输入参数,所以会发生“输入参数太多”的错误。

因此,只要在定义set函数时添加一个参数接收实例变量的值即可解决问题。如下:若用不到输入变量obj,可用“~”将其忽略。

set(obj,ID,age,height,weight)
MATLAB自定义函数的中碰到输入参数太多的问题,如何解决? 如图一所示,在这里,本人自己设置了一个fitness的函数,形参有20个,但是在调用这个函数的候,出现输入参数太多的问题,但是个人感觉传入的形参都是用到了的,没有输入过多和过少的问题。 解决方式: 不同版本的MATLAB或者是不同的电脑可能会出现不同的提示原因,我的笔记本电脑上装的是MATLAB2016b版的,但是我在另外一台电脑同样是2016b版的电脑上确出现了更详细的提示。忘记截图了,它说的是在fitness函数中未定义bi
有的候用C#写图像处理方法,比较费事,不如Matlab简单,但是Matlab又做不出WPF那样的好看界面,怎么办呢。 今天正好我要实现这个功能,就顺便写个小例子,给需要的人做个借鉴。 想要用WPF调用Matlab代码,就用到了Matlab生成.DLL文件的功能。 注:我的VS版本是2013,Matlab版本是2012a,两个软件不算新也不算老,应该是现在普遍用的版本 首先,生成Matlab的.DLL文件 在matlab的左下角选择start-matlab-NE-deploytool,或者直接在command界面输入deploytool。 在弹出的对话框里,输入你需要输入的内容,可以默认,也
解决方案 遇到这个情况,如果反复检查了函数内的参数输出没有问题,那肯定是原有Matlab代码定义了,在中声明了这个函数,只需找到声明这个函数的,然后在函数声明中添加要多输出的参数即可解决。 一些函数,诸如ode45,ode15s,bvp4c等函数,部分输入需要为函数句柄,即@fun的形式,在函数输入较为简单的情况下,函数只有一个输入,为function y = fun(x)的形式,此,可以直接写为@fun的形式。 但是有些情况下,调用的函数(即前文提到的函数句柄)输入量较多,如下形式function y = fun(t,x,a,b),此调用不能写为@fun的形式,否则会报错,因为fun函数需要的参数没有输入。此有两种方式解决此问题,第一种是将函数句柄写为@(t,x) fun(
funcslider.m 给定具有多个(最多 5 个)输入和多个输出的函数, [z1, z2, ...] = f(x1,...,x5) 函数滑块让您可以使用不断更新的滑块来改变输入值 x1...x5,然后在输出 (z1,z2...) 上使用任意 MATLAB 表达式查看结果。 输入函数、输出(绘图)函数和滑块值/限制都是用户可设置的。 我在此 GUI 中使用 5 个滑块的硬编码限制编写了此内容,但更改此设置可能不会太难。 帮助显示了几个示例,希望可以清楚地说明这一点。 已知的问题: 当检查lock命令,尝试保持视图完全相同可能会有些困难。
QMLE,分位数最大似然估计,如QMLE:基于分位数的分布函数的快速、稳健和高效估计。 -布朗和希思科特,2003 QMLE:使用依赖于参数的下限估计对数正态、Wald 和 Weibull RT 分布。 -Heathcote, Brown, Cousineau, 2004 也可以看看: 对 Heathcote、Brown 和 Mewhort 用于响应间分布的 QMLE 方法的评论。 -Speckman, Rouder, 2004 [par,logL, exF]=QMLE(data, distr) par= 返回使用估计的分布 distr 的参数数据中的分位数。 DATA 已包含 QUANTILE。 使用功能matlab 中的“分位数”或此代码提供的“lequantile”。 希思科特等人。 建议将极端作为第一个和最后一个分位数假定分布的(例如,0 和 +inf 表示 exp. dis
本规范的制定完全归功于本杰明·克劳斯 (2013)。 我扩展了他的 Matlab Exchange 条目( https://www.mathworks.com/matlabcentral/fileexchange/41961-nanconv )以允许 N 维。 下面是 Benjamin Kraus 对这段代码如何工作的解释。 我决定在这里转录它,因为他做得非常好! NANCONVN 运行 CONVN 两次或三次。 第一次运行原始输入信号A和K,不同的是A中的所有NaN值都用零代替。 使用“相同”输入参数,因此输出与 A 的大小相同。第二次卷积在与 A 大小相同的矩阵之间完成,除了在 A 中存在 NaN 值的地方使用零,其他地方使用零。 第一个卷积的输出被第二个卷积的输出归一化。 这会纠正 A 中的缺失 (NaN) 值,但由于在卷积过程中假设为零填充,它具有纠正边缘效应的副作用。 当包