why do I receive not enough input arguments
56 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
That's my code and I keep receiving "not enough inpur arguments" error in line 11
function [y] = signal_avg_lim( filename, peaknumber, revsize )
%SIGNAL_AVG function for averaging x number of peaks for a signal
%Discription: The user inputs the filename of interest and the number of
%peaks that the data is to be averaged over. For each revolution the signal
%is averaged over the x max peaks. The averaged data for each revolution is
%then plotted.
%Currently only works for 10 revs
revstart = 000001;
counter = 1;
11. revincrease = revsize;
%Loop to run for 10 revs
%removing outliers
revsize = revsize + revstart;
y = zeros(10, 1);
DiffYSqt = zeros(10, 1);
x = 1:10;
while counter < 11
[pks, locs] = findpeaks(filename.(1)(revstart:revsize),'MinPeakHeight',10);% returns the indices of the peaks
i= 1;% initializes the counter
pks = pks';% inverts the pks array
[r, c] = size(pks); % provides the row and colum size for the pks array
while i < r-1
i = i + 1;
if pks(i)> 1000
pks(i) = 0;
end
%if pks(i)> (pks(i+1)+ 50)
% pks(i) = 0;
%end
end
pkssort = sort(pks, 'descend');
topx = (pkssort(1:peaknumber));
pnt1 = mean(topx);
counter2 = 1;
while counter2 < (peaknumber+1)
DiffYSqt = (topx(1,counter2) - pnt1)^2;
counter2 = counter2 +1;
end
mean2 = mean(DiffYSqt);
std (counter, 1) = sqrt(DiffYSqt);
y(counter, 1) = pnt1;
revstart = revsize;
revsize = revsize + revincrease;
counter = counter +1;
end
%print the results
x;
y;
%Plot
plot (x, y, 'o');
ylim([0 800]);
%lsline
end
2 commentaires
Réponses (2)
Steven Lord
le 16 Fév 2023
Based on the function definition:
function [y] = signal_avg_lim( filename, peaknumber, revsize )
your function can accept a maximum of three input arguments. Since the code does use the revsize variable in the body of the function (on the line revincrease = revsize;) your function needs to be called with at least three input arguments. Therefore you must call it with exactly three input arguments.
From the text of the error message you're likely calling it with fewer than three input arguments.
If you are calling it with exactly three inputs, please show us how you're trying to call signal_avg_lim and show us the output of the following function call executed immediately before you call signal_avg_lim.
whos
2 commentaires
Steven Lord
le 18 Fév 2023
Is this exactly what you typed in the Command Window or the script where you're trying to run this code?
signal_avg_limt "(Dec20-1(cut4&2)_filter, 50, 094167"
That is equivalent to:
signal_avg_limt("(Dec20-1(cut4&2)_filter, 50, 094167")
which is calling signal_avg_limit with one input argument, the string "(Dec20-1(cut4&2)_filter, 50, 094167". What you're using is the "command form", as described on this documentation page. In general you should only use command form for functions where all the input arguments are text (character vectors or strings.) So functions like help, hold, doc, ls, etc. are all fine to call in command form, but for other functions (like your signal_avg_limit) I recommend using function form.
signal_avg_lim("(Dec20-1(cut4&2)_filter", 50, 094167)
I assume the "t" at the end of your function name was a typo and have omitted it in the function call above.
That file name also looks strange to me; while it's okay for a file name to have mismatched parentheses, it's likely to throw off programmers reading your code.
Jan
le 17 Fév 2023
signal_avg_limt "(Dec20-1(cut4&2)_filter, 50, 094167"
This calls the function with 1 argument: a string. I guess you mean this instead:
signal_avg_limt('Dec20-1(cut4&2)_filter', 50, 094167)
The code looks strange: revstart = 000001 is the same as revstart = 1.
I cnnot guess the purpose of this expression: filename.(1)(revstart:revsize) .
This does not print anything:
%print the results
x;
y;
5 commentaires
Jan
le 18 Fév 2023
@Omar: filename(revstart:revsize) is the part of the filename from index revstart to revsize. I'm sure you do not want to process the characters of the file name, but the contents of the file.
I've asked already what kind of file 'Dec20-1(cut4&2)_filter' is. If you answer this question fpr clarification, suggesting a method to import the data is possible.
Voir également
Catégories
En savoir plus sur Annotations 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!