Error "not enough input arguments"
显示 更早的评论
Hi all, I'm new to MatLab and I copied a function from the website here:
To attempt and solve a problem.
This is my code:
function dc = test(t,c)
k1 = 55.2;
k2 = 30.2;
dc = zeros(3,1);
dc(1) = -k1*c(1)^(1/2)*c(2) - k2*c(3)*c(1)^(1/2);
dc(2) = -k1*c(2)*c(1)^(1/2);
dc(3) = k1*c(2)*c(1)^(1/2) - k2*c(3)*c(1)^(1/2);
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
[T,C] = ode45(@test,[0 1],[0.021 0.0105 0.5],options);
plot(T,C(:,1),'-',T,C(:,2),'-.',T,C(:,3),'.')
The error is:
Error using test (line 5)
Not enough input arguments.
Can anyone help?
3 个评论
Rohan Shaju
2018-3-27
编辑:Walter Roberson
2018-3-28
% Simulate supercontinuum generation for parameters similar
% to Fig.3 of Dudley et. al, RMP 78 1135 (2006)
% Written by J.C. Travers, M.H Frosz and J.M. Dudley (2009)
% Please cite this chapter in any publication using this code.
% Updates to this code are available at www.scgbook.info
n = 2^13; % number of grid points
twidth = 12.5; % width of time window [ps]
c = 299792458*1e9/1e12; % speed of light [nm/ps]
wavelength = 835; % reference wavelength [nm]
w0 = (2.0*pi*c)/wavelength; % reference frequency [2*pi*THz]
T = linspace(-twidth/2, twidth/2, n); % time grid
% === input pulse
power = 10000; % peak power of input [W]
t0 = 0.0284; % duration of input [ps]
A = sqrt(power)*sech(T/t0); % input field [W^(1/2)]
% === fibre parameters
flength = 0.15; % fibre length [m]
% betas = [beta2, beta3, ...] in units [ps^2/m, ps^3/m ...]
betas = [-11.830e-3, 8.1038e-5, -9.5205e-8, 2.0737e-10, ...
-5.3943e-13, 1.3486e-15, -2.5495e-18, 3.0524e-21, ...
-1.7140e-24];
gamma = 0.11; % nonlinear coefficient [1/W/m]
loss = 0; % loss [dB/m]
% === Raman response
fr = 0.18; % fractional Raman contribution
tau1 = 0.0122; tau2 = 0.032;
RT = (tau1^2+tau2^2)/tau1/tau2^2*exp(-T/tau2).*sin(T/tau1);
RT(T<0) = 0; % heaviside step function
%RT = RT/trapz(T,RT); % normalise RT to unit integral
% === simulation parameters
nsaves = 200; % number of length steps to save field at
% propagate field
[Z, AT, AW, W] = gnlse(T, A, w0, gamma, betas, loss, ...
fr, RT, flength, nsaves);
% === plot output
figure();
lIW = 10*log10(abs(AW).^2); % log scale spectral intensity
mlIW = max(max(lIW)); % max value, for scaling plot
WL = 2*pi*c./W; iis = (WL>400 & WL<1350); % wavelength grid
subplot(1,2,1);
pcolor(WL(iis), Z, lIW(:,iis)); % plot as pseudocolor map
caxis([mlIW-40.0, mlIW]); xlim([400,1350]); shading interp;
xlabel('Wavelength / nm'); ylabel('Distance / m');
lIT = 10*log10(abs(AT).^2); % log scale temporal intensity
mlIT = max(max(lIT)); % max value, for scaling plot
subplot(1,2,2);
pcolor(T, Z, lIT); % plot as pseudocolor map
caxis([mlIT-40.0, mlIT]); xlim([-0.5,5]); shading interp;
xlabel('Delay / ps'); ylabel('Distance / m');
Rohan Shaju
2018-3-27
Please help.Not enough input arguments error!
Walter Roberson
2018-3-28
What is gnlse ?
采纳的回答
更多回答(3 个)
Image Analyst
2014-11-22
0 个投票
You forgot to include the error message - you just snipped out a tiny part of it and did not tell us the crucial parts. Please read this. And include all the red text (not just part of it, so we'll know what line 5 actually is), and tell us how you called this function, for example what values for t and c did you pass in?
By the way, you didn't just click the green triangle without providing any input arguments whatsoever, did you???
5 个评论
Star Strider
2014-11-22
The code you posted runs for me without error (in R2014b), but gives negative and complex outputs.
There has to be a coding error somewhere. What’s your original system?
Image Analyst
2014-11-22
What did you pass in for c? Evidently you passed in just a single number, not an array, so there is no c(2) or c(3).
Thomson
2014-11-23
Deeksha kaila
2017-10-2
编辑:Walter Roberson
2017-10-2
Hello, I typed a function
Function y=lf(x)
Y=log(1-exp(-1/x))
Bt it displays an error 'Not enough input arguments'. Please help me to run this function.
2 个评论
Walter Roberson
2017-10-2
You need to invoke the routine at the command line and pass in a value. For example,
lf(2.334320)
Jan
2017-10-2
@Deeksha kaila: Please do not append a new question to an existing thread. This is the section for answers and such "thread hijacking" confuses the readers. Thanks.
Sowmitha Sangi
2020-11-29
function F = SpectralFlux(signal,windowLength, step, fs)
signal = signal / max(abs(signal));
curPos = 1;
L = length(signal);
numOfFrames = floor((L-windowLength)/step) + 1;
H = hamming(windowLength);
m = [0:windowLength-1]';
F = zeros(numOfFrames,1);
for (i=1:numOfFrames)
window = H.*(signal(curPos:curPos+windowLength-1));
FFT = (abs(fft(window,2*windowLength)));
FFT = FFT(1:windowLength);
FFT = FFT / max(FFT);
if (i>1)
F(i) = sum((FFT-FFTprev).^2);
else
F(i) = 0;
end
curPos = curPos + step;
FFTprev = FFT;
end
2 个评论
Sowmitha Sangi
2020-11-29
can anyone help me with this :
error: SpectralFlux
Not enough input arguments.
Error in SpectralFlux (line 2)
signal = signal / max(abs(signal));
Walter Roberson
2020-11-30
95% of the time when someone posts something like this, it is because they have pressed the big green Run button to run the code, instead of going down to the command line and invoking the code passing in parameters.
If you press the big green Run button, MATLAB will not look inside the base workspace to find definitions for signal, windowLength, step, or fs: MATLAB relies strictly on the values passed in positionally.
类别
在 帮助中心 和 File Exchange 中查找有关 Electrophysiology 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
