Effacer les filtres
Effacer les filtres

Why is validateattributes returning me a Not enough inputs error only in this context?

1 vue (au cours des 30 derniers jours)
I have a class definition called LsqSinusoid(n_samples, f, Fs). The constructor for that class takes three inputs - n_samples, the number of samples to use, f, the frequency of a sinusoid function, and Fs, the sample frequency. I am trying to construct an instance of the class, and am calling
lsqsin = LsqSinusoid(500, 500, 25000).
When I type this into the command line it returns the class with the properties I'd expect it to. Excellent.
When I use this code in a script, it returns an error. The first line of the constructor is
validateattributes(n_samples, {'numeric'}, {'positive', 'scalar', 'integer'}).
This line returns the error
Not enough input arguments.
I tried displaying n_samples before calling validateattributes to see if it gets that far, and it displays 500, then claims that there was an error with my call to disp - again, not enough input arguments.
What am I missing? The function takes three arguments, and I've given it three arguments. Why is it returning me this error in this way?

Réponse acceptée

Daniel Pollard
Daniel Pollard le 12 Mar 2021
I was assigning the class to a vector in reverse order, using a loop like
for k = 16:-1:1
lsqsin(k) = LsqSinusoid(N_samples, frequencies(k), Fs)
When I reversed the order of the for loop, the error went away. I don't know why.

Plus de réponses (0)


En savoir plus sur Multidimensional Arrays dans Help Center et File Exchange




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by