没有足够的输入参数

2690次(过去30天)
TheLimpNinja
TheLimpNinja 2012年11月7日
大家好,我对MATLAB很陌生 我有一些麻烦。 很多 的人 有th e相同 问题,但似乎没有人能够用简单的英语解释或解决它。有人能解释一下这个错误是什么以及如何修复它吗
我有一个简单的函数:
函数[r] = mec134function(w,theta_deg)
t2 = 10000;
theta_rad = (theta_deg. / 180)。*π;
t1 = 55090. / (10 * sin (theta_rad));
rx = (t1。* cos (theta_rad)) t2;
ry = w - (t1。* sin (theta_rad));
r = ((rx) ^ 2 +(一)^ 2)。^ 0.5;
结束
第3行似乎出现了这个错误,但我不确定为什么。
谢谢。
9日评论
沃尔特罗伯森
沃尔特罗伯森 2019年10月7日
第38行哪个函数?

登录评论。

接受的答案

Akiva戈登
Akiva戈登 2012年11月8日
编辑:MathWorks支万博1manbetx持团队 2018年11月27日
你的函数定义了两个输入参数(w和theta_deg)。当你运行mec134函数时,你必须指定两个输入,否则你会得到错误“没有足够的输入参数”。
例如,如果你在命令窗口中运行mec134函数而不指定任何参数:
> > Mec134function
你会得到这个错误:
足够的输入参数。
错误在Mec134function中(第3行)
theta_rad = (theta_deg. / 180)。*π;
如果你运行mec134函数并指定两个输入参数,“w”和“theta_deg”(假设定义了“w”和“theta_deg”),你不会得到错误消息:
> > Mec134function (w, theta_deg)
如果你有文件“mec134功能。m”在编辑器中打开,你尝试通过按下“运行”按钮或F5运行函数,MATLAB运行mec134函数没有任何输入参数,你得到的错误“不够的输入参数”。然后打开“Run”按钮下拉菜单,提示您为缺少的输入参数输入值。
添加所需的值并按enter。您输入的值将在以后单击“运行”按钮或F5时设置为默认输入。
要更改值,请按“运行”按钮下面的向下箭头并输入新值。
5个评论
埃文Curatolo
埃文Curatolo 2020年9月27日
天啊!保佑你的灵魂。谢谢你的评论。

登录评论。

更多的答案(14)

TheLimpNinja
TheLimpNinja 2012年11月7日
编辑:沃尔特罗伯森 2016年7月15日
抱歉,函数是
函数[r] = mec134function(w,theta_deg)
t2 = 10000;
theta_rad = (theta_deg. / 180)。*π;
t1 = 55090. / (10 * sin (theta_rad));
rx = (t1。* cos (theta_rad)) t2;
ry = w - (t1。* sin (theta_rad));
r = ((rx) ^ 2 +(一)^ 2)。^ 0.5;
结束
如果这更清楚的话:-)
3评论
史蒂文勋爵
史蒂文勋爵 2016年12月27日
在发布R2015b之前 函数 rad2deg 函数是Mapping Toolbox的一部分。在那个版本中 搬到MATLAB
作为避免角度和弧度之间转换的另一种解决方案,MATLAB也有功能 信德 cosd 用来计算角度的正弦和余弦这些在MATLAB中已经存在很长时间了。[我记不清是什么时候介绍他们认识的。]

登录评论。


TheLimpNinja
TheLimpNinja 2012年11月7日
编辑:沃尔特罗伯森 2012年11月7日
谢谢:-)
将看一看“入门”
我有一个简单的函数:
函数[r] = mec134function(w,theta_deg)
t2 = 10000;
theta_rad = (theta_deg. / 180)。*π;
t1 = 55090. / (10 * sin (theta_rad));
rx = (t1。* cos (theta_rad)) t2;
ry = w - (t1。* sin (theta_rad));
r = ((rx) ^ 2 +(一)^ 2)。^ 0.5;
结束
这似乎给第2行带来了这个错误,但我不确定为什么。
2评论
Waldemiro Kubucama
你好,首先按下按钮“运行”在Matlab和之后,只有你按下按钮“ENTER”你的计算机。我想你的问题会解决的。

登录评论。


布莱恩·巴特森
布莱恩·巴特森 2012年11月29日
编辑:布莱恩·巴特森 2012年11月29日
我也是非常新的Matlab,并试图运行上面的代码在。m (JP Donlon 11月7日)。但是,我总是得到一个错误,说明“没有足够的输入参数”。我不确定这是什么意思,因为我尝试过运行教授编写的其他代码,这些代码可以在其他计算机上运行。是我的偏好设置有问题吗?
此外,当我运行代码分析器时,没有问题……不知道发生了什么。
4评论
沃尔特罗伯森
沃尔特罗伯森 2020年3月29日
https://www.mathwands.com/matlabcentral/answers/53100-not-enough-input-arguments#comment_109973.

登录评论。


安妮迈克尔
安妮迈克尔 2016年7月15日
编辑:沃尔特罗伯森 2016年7月15日
如何纠正这个错误
错误使用DetectFace(第68行)
足够的输入参数。
代码如下所示
我= imread ('lena.jpg');
minface = 20;您正在搜索的脸部的百分比最小尺寸
maxFace = 4000;%您正在搜索的脸的最大尺寸
重叠= 0.5;用于分组附近检测的重叠阈值
numThreads = 24;%CPU线程数量用于并行计算
如果Nargin > 2 && ~ is空(options)
如果isfield(选项,“minFace”)&&〜isempty(options.minface)
minFace = options.minFace;
结束
如果isfield(选项,“maxFace”) & & ~ isempty (options.maxFace)
maxFace = options.maxFace;
结束
如果isfield(选项,“overlappingThreshold”) & & ~ isempty (options.overlappingThreshold)
overlappingThreshold = options.overlappingThreshold;
结束
如果isfield(选项,“numThreads”) & & ~ isempty (options.numThreads)
numThreads = options.numThreads;
结束
结束
% %测试探测器
如果~ ismatrix(我)
I = rgb2gray(我);
结束
candi_rects = npscan (model, I, minFace, maxFace, numThreads);
% %后加工
如果isempty (candi_rects)
矩形= [];
返回
结束
3评论
沃尔特罗伯森
沃尔特罗伯森 2016年7月15日
你为什么用 输入参数个数 返回 当你写这个的时候 脚本 输入参数个数 定义为0在 脚本 返回 可能导致奇怪的行为,当使用 脚本
当我四处搜索时,在我看来,这段代码好像是抄袭的 https://github.com/biotrump/NPD/blob/master/NPDFaceDetector/DetectFace.m 这是一个 函数 不是一个 脚本 .在那里的评论中给出了调用该函数的示例:
我= imread ('lena.jpg');
负载(“model.mat”);
rects = DetectFace(npdModel, I);
你不能只是移除 函数 从一个函数行,并赋值给一个变量,并期望它工作。

登录评论。


瑞玛·莫汉蒂
瑞玛·莫汉蒂 2016年12月27日
编辑:沃尔特罗伯森 2017年5月26日
clc;清除;关闭所有
xo = 0.4;
一个= [];
b = [];
AEQ = [];
说真的= [];
Q = 100;
R = 1;
n = 50;
情况= 0 (100 1);
%umin = -1 *那些(100,1);
%umax = 1 *那些(100,1);
% U = fmincon (Aeq @cost1情况,A, b,说真的,Umin, Umax, [], [], N);
x = xo;h = 0.1;
xo = [-0.5, 0.5];
选择= optimoptions (@fmincon,“算法”“sqp”);
U = fmincon (@cost1情况 ,[],[],[],[],[],[],@ confuneq选项);
为了k = 1: N
s1 = f(x(k),u(k));
S2 = F (x (k) + 0.5 * h * S1, U (k));
S3 = F (x (k) + 0.5 * h * S2, U (k));
S4 = F (x (k) + h * S3, U (k));
x(k+1) = x(k) + (1/6)* (S1+ 2*S2+ 2*S3 + S4)*h;
K = K + 1;
结束
%的情节(x);
情节(U);
网格
数字();plot(x)
网格
我是matlab新手。有人能帮我解决这个问题吗?
它没有显示足够的输入参数。

今次shree
今次shree 2017年3月3日
编辑:沃尔特罗伯森 2017年3月3日
你好,先生,我是matlab的新手。我在这段代码中得到的错误就像“预处理需要更多的输入参数来运行”。你能运行这个程序吗?我的项目主题是识别和匹配假标识使用过滤器。
函数img =预处理(我)
[x y o] =大小(我);
如果o = = 3
我= rgb2gray(i);
结束
I = im2double(我);
% %中值滤波器
地中海= medfilt2(我);
图中,imshow(地中海)
标题(“中值过滤图像”
[psnr_med, mse_med] = psnr(我,地中海)
% %平均滤波器
out7 = imfilter(我,fspecial (“平均”));
图中,imshow (out7)
标题(的意思是过滤后的图像
[psnr_avg, mse_avg] = psnr(我out7)
% %高斯滤波器
高斯= imfilter(我,fspecial (“高斯”));
图,imshow(gau)
标题(“高斯滤波器的图像”
[psnr_gau, mse_avg] = psnr(我,高斯)
% %维纳滤波器
psf = fspecial (“高斯”,7,10);
image1 = imfilter (psf,我“conv”“圆”);
var1 = (1/256) ^ 2/12;
var2 = var(我(:));
魏= deconvwnr (psf, image1 (var1 / var2));
图中,imshow(魏);标题(“维纳过滤图像”);
[psnr_wei, mse_wei] = psnr(我魏)
psnr_all = [psnr_med psnr_avg、psnr_gau psnr_wei);
psnr_max = max (psnr_all);
val =找到(psnr_all = = psnr_max);
如果val = = 1
img =地中海;
disp (“中位数有较高的psnr”);
elseifval = = 2
img = out7;
disp ("平均psnr高");
elseifval = = 3
img =高斯;
disp (高斯有高的psnr);
别的
img =魏;
disp ('weiner有高psnr');
结束
3评论
史蒂文勋爵
史蒂文勋爵 2017年3月24日
Vani Shree,你应该问这个是一个单独的问题,因为它与“不够的输入参数”原始问题无关。展示您所写的内容并询问您有关您遇到困难的具体问题,您可能会收到一些指导。

登录评论。


Ganesh Petkar
Ganesh Petkar 2017年4月18日
我得到的错误如下函数“没有足够的输入参数。”
delayed_signal = mtapped_delay_fcn(输入);

温德尔
温德尔 2017年5月26日
编辑:沃尔特罗伯森 2017年5月26日
嗨,我正在尝试运行Dr. John Stockie的matlab代码,但我得到了一个“不够的输入参数”错误。我不太擅长使用Matlab,所以我会感谢任何帮助。谢谢你!我粘贴代码:
函数c = ermak(x,y,z,h,q,u,wset,wdep)
% ERMAK:计算污染物浓度(kg/m^3)
%高斯羽流模型,修正为沉积和沉降
%的速度。该代码处理单个源代码(位于
%起源)和多个受体。
%输入参数:
感受器位置:沿风向、随距离变化
源在x=0 (m)处的百分比
% y -感受器位置:横风向(m)
% z -受体位置:垂直高度(m)
% H -震源高度(m)
% Q -污染物排放速率(kg/s)
% U -风速(m/s)
% Wset -重力沉降速度(m/s)
% Wdep -沉积速度(m/s)
%输出:
% C—污染物浓度(kg/m^3)
参考文献:Ermak (1977), Winges(1990/1992)。
首先,定义截止速度,在截止速度以下浓度= 0。
Umin = 0.0;
根据稳定性等级C -确定σ系数
%轻微不稳定(3-5米/秒)。
唉= 0.34;= 0.82;阿兹= 0.275;bz = 0.82;
sigmay = ay * abs (x)。^by .* (x > 0);
sigmaz =阿兹* abs (x)。^bz .* (x > 0);
%计算涡流扩散率(m^2/s)。
Kz = 0.5*az*bz*U*abs(x).^(bz1). * (x > 0);% K = 0.5*U*d(∑^2)/dx
%用Ermak公式计算污染物浓度(kg/m^3)
如果U < Umin,
C = 0 * z;
别的
wo = wdep - 0.5 * wset;
C =问。/(2 *π*你* sigmay。* sigmaz)。* exp (-0.5 * y。^ 2. / sigmay。^ 2)。*...
exp(-0.5 *名为Wset * (z-H)。/ Kz -名为Wset ^ 2 * sigmaz。^ 2/8. / Kz。^ 2)。*...
(exp (-0.5 * 2. (z-H)。^ / sigmaz。^ 2) +...
exp (-0.5 * (z + H)。^ 2. / sigmaz。^2) -根号(2*)*Wo*sigma。/ Kz。*...
exp(我们* (z + H)。/ Kz + 0.5 *我们^ 2 * sigmaz。^ 2. / Kz。^ 2)。*...
误差补函数(我们* sigmaz /√(2)。/ Kz + (z + H) /√(2)。/ sigmaz));
II =查找(ISNAN(C)| ISINF(C));
c(ii)= 0;%设置所有NaN和inf值为零。
结束
并且错误消息是指31行中的“sigmay”
1评论
沃尔特罗伯森
沃尔特罗伯森 2017年5月26日
请在这里阅读前面的答案。

登录评论。


aarthy reddy R
aarthy reddy R 2019年9月4日
编辑:沃尔特罗伯森 2019年10月14日
函数测试(num1, num2,小s)
加载(小,num1, num2)
S = sum(num1, num2)
结束
这个代码,我得到这些错误
足够的输入参数。
错误在测试中(第3行)
加载(小,num1, num2)
4评论
沃尔特罗伯森
沃尔特罗伯森 2019年10月14日
注意:如果你传入一个变量的名字作为第四个参数,那么你传递的函数将会 将该变量设置为求和的结果。如果你想在MATLAB中返回一个值,你需要在函数行中“=”的左边编码它。例如,
函数S = test(num1, num2, small)
加载(小,num1, num2)
S = sum(num1, num2)
结束
这可能不会如你所愿。为了让load()在这里工作,small和num1和num2都必须是字符向量或标量字符串变量,num1和num2必须与有效的MATLAB变量名具有相同的形式。这些名字必须在。mat文件中找到 变量。
通过使用load()的形式,MATLAB通常会将变量名“噗”地存在。然而,当你使用 结束 匹配一个 函数 语句,你向MATLAB保证你不会把变量变成存在的,并且允许MATLAB给出一个错误或忽略神奇创建的变量。因此,后 加载 num1 num2 可能会继续是字符向量或字符串对象,你会尝试调用sum()来传递它们。如果第一个参数, num1 是一个字符串对象,但如果num1是一个字符向量就可以了。只有有限数量的字符向量或标量字符串对象对sum()的第二个参数有效,即'all'、'double'、'native'、'default'、' inclenan '或'omitnan'。如果你碰巧把这些变量命名为其中任何一个,那将是令人惊讶的……

登录评论。


Chapat
Chapat 2020年3月11日
编辑:沃尔特罗伯森 2020年3月11日
你好。我是新的在Matlab和我想做我的分配与这个函数refraction_2layers和Matlab说错误使用refraction_2layers(第18和25行)这是整个程序
函数refraction_2layers(v1, v2, z, FIRST_ARRIVALS_ONLY);
%折射2layers(v1, v2, z);
%创建带有层速度的两层系统的旅行时间图
% v1和v2和z的层1厚度
% FIRST_ARRIVALS_ONLY标志可以设置为1,只绘制第一次到达的图像。通过
%默认,所有到达都被绘制。
如果nargin < 4 FIRST_ARRIVALS_ONLY = 0;结束
检波器x位置(m,相对于震源)%%
x = [0:5:300];
%%直达波%%沿地面传播(速度v1)
t1 = x./v1;
% %头波
沿z1-z2边界折射
旅行时间取决于两层的速度
%%仅层1的厚度(层2的厚度无关)
t2 = (2 * z *√v2 ^ 2 v1 ^ 2) / (v1 * v2)) + x / v2;注意坡度应该是1/v2!
xcrit z = 2 * * v1 /(√(v2 ^ 2 v1 ^ 2));
如果伊斯雷尔(xcrit)
a = min(找到(x > xcrit));
结束
交叉= ((2 * z *√(v2 ^ 2 v1 ^ 2)) / (v1 * v2)) / (1 / v1-1 / v2);
B = max(find(x<= cross));
如果FIRST_ARRIVALS_ONLY
情节(x (1: b) t1 (1: b) * 1000,”。……”
抓住
如果伊斯雷尔(t2)
情节(x (b:结束),t2 * 1000 (b:结束),“r——”
结束
别的
情节(x, t1 * 1000,”。……”
抓住
如果伊斯雷尔(t2)
情节(x(结束),t2(结束)* 1000,“r——”
结束
结束
包含(“检波器抵消(m)”
ylabel (“时间(ms)”
网格
传奇(“直接波”“头波”
标题(['z1 ='num2str (z),“米;v1 = 'num2str (v1),米/秒;v2 = 'num2str (v2),“米/秒”])
轴([0 300 0 300])
抓住
1评论
沃尔特罗伯森
沃尔特罗伯森 2020年3月11日
Chapat
我为您格式化了代码,使其对其他人具有可读性,但我怀疑我没有准确地保留行边界,所以我们不知道哪行会给您带来问题。请用注释在他们身上做标记。请同时给出准确的错误信息。
也请检查一下位置 结束 语句。在我看来,你可能多喝了两杯 结束 语句。

登录评论。


Josilyn Dostal
Josilyn Dostal 2020年4月23日
我真的在努力弄清楚这个“没有足够的输入参数”错误在我的代码。任何帮助都将不胜感激!这是一个间歇蒸馏问题,错误是指底部附近的温度函数。代码和错误如下:
P = 912;% mmHg或1.2 atm
10 = 100;开始时蒸馏器中的液体的摩尔数
A = [6.90565 6.95464];B = (1211.033 - 1344.8);C = (220.79 - 219.482);%Antoine常数
%x0 = [0.60 0.40];%初始液体浓度XB = 60%XT = 40%
% xf = [0.20 0.80];%终液浓度xb = 20% xt = 80%
xtspan = linspace(0.40、0.80,100);
[xt, L] = ode45(@ mol, xtspan, L0);
l = l(结束);
流(当甲苯的液相摩尔分数达到0.80时,蒸馏器中剩余的液体量为%f摩尔L);
%汽液平衡比,K
函数Kt = EquilibriumRatio (Psatt)
Kt = Psatt / P;
结束
%甲苯蒸气压
函数Psatt = VaporPressuret (T, A, B, C)
psatt = 10 ^(a(2)-b(2)/(t + c(2))));
结束
苯蒸气压%
函数psatb = vachtpressureb(t,a,b,c)
Psatb = 10 ^ (- b (1) (1) / (T + C (1)));
结束
%的颂歌
函数dLdx =摩尔(xt,左)
T0 = 95.585;
% = odeset选项(“RelTol”、1 e-6 AbsTol, 1 e-8);
%选项= optimset (PlotFcns, {@optimplotx, @optimplotfval});
% = optimset选项(“显示”、“iter”);%显示迭代
选择= optimset (“显示”“关闭”'tolx'1 e-6);%的选项
T0 = f0 (@temp, T0, options);
Psatt = VaporPressuret (T);
Kt = EquilibriumRatio (Psatt);
dLdx = L / (xt * (Kt-1));
结束
函数xt Tempfun = temp (T, P, A, B, C)
Psatt = VaporPressuret (T, A, B, C);
psatb =蒸发术(t,a,b,c);
= Psatb* xt + Psatb*(1-xt) - P;
结束
> > project2
错误使用fzero(第306行)
FZERO无法继续,因为用户提供的function_handle ==> temp失败,出现以下错误。
足够的输入参数。
错误项目2>摩尔(第30行)
T0 = f0 (@temp, T0, options);
错误在odearguments(第90行)
f0 =函数宏指令(颂歌,t0, y0, args {:});% ODE15I设置参数{1}为yp0。
错误在ODE45(第115行)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
错误在项目2(第7行)
[xt, L] = ode45(@ mol, xtspan, L0);
5个评论
Josilyn Dostal
Josilyn Dostal 2020年4月24日
你是我的救世主。你是如此美好。

登录评论。


玛丽亚哈桑
玛丽亚哈桑 2020年7月13日
你好,
我得到错误'没有足够的输入参数。'我正在尝试在线试用版本。当我单击运行图标时,它不允许我为输入输入值,因为没有输入值的选项。有什么建议吗?
最好的
莎拉

Gurwinder Pal Singh Binder
Gurwinder Pal Singh Binder 2020年11月27日
你好
我是matlab的新手。我得到错误消息“extract_features”需要更多的输入参数运行。
命令窗口中的Anderror:
> > Extract_Features
输入参数不足。
Extract_Features错误(第2行)
img1 = imread(文件名);
代码如下:
函数Extract_Features(文件名,标志)
img1 = imread(文件名);
如果ndims (img1) = = 3;img1 = rgb2gray (img1);结束%彩色图像
disp ([“提取特征”文件名“……”]);
冷杉= ext_finger (img1 0);
冷杉=冷杉(冷杉(:,3)< 5:);
如果标志= = 1
数字;
imshow(img1);
抓住
fir1 =找到(冷杉(:,3)= = 1);
fir3 =找到(冷杉(:,3)= = 3);
情节(冷杉(fir1、1)、冷杉(fir1, 2),' r + ');
情节(冷杉(fir3、1)、冷杉(fir3, 2),“波”);
结束
filename2 =文件名;filename2 (end-1) =“x”;filename2(结束)=“t”
保存(filename2,“杉”“ascii”);
结束
8的评论
沃尔特罗伯森
沃尔特罗伯森 2020年11月27日
对。

登录评论。


默罕默德Hadyan Utoro
默罕默德Hadyan Utoro 2021年6月17日
有人能帮我一下吗
%%全波整流和均方根包络线
rec_EMG = abs (EMG);
信封= 0 (L, 1);
窗口= 50;
信封=√movmean rec_EMG。^ 2),“窗口”);
我试图得到RMS但是它说
没有足够的输入参数。
我不明白,因为我已经用了两个参数。
谢谢你的帮助
2评论
默罕默德Hadyan Utoro
默罕默德Hadyan Utoro 2021年6月17日
非常感谢罗伯逊先生的解释。我把支架放错了位置。
感谢你的帮助

登录评论。

标签

社区寻宝

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!