'double' input argument not found using a function

Hello,
I have got a int16 array (called allAudio) and would like to run the function 'findpeaks' on it. When I write pks = findpeaks(allAudio(1,:)), the error message says: "Error using findpeaks (line 59) Input arguments must be 'double'."
I don't understand it... Any thoughts?

 Akzeptierte Antwort

Iain
Iain am 22 Mai 2013

0 Stimmen

findpeaks only operates on numbers that are 64 bit floating point numbers (they're called doubles).
Convert your 16bit integers to double with the function "double".
double_allAudio = double(allAudio);

2 Kommentare

Great!
here's the last bit of the code I wrote to make it work (Had to transpose the matrix)
allAudio_transp=allAudio.';
double_allAudio = double(allAudio);
[pks,locs] = findpeaks(double_allAudio(1,:))
kemo
kemo am 30 Okt. 2017
Hello all, But what if we need to specify a certain datatype for the arguments and give the inputs accordingly??

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Steven Lord
Steven Lord am 30 Okt. 2017

0 Stimmen

In release R2017b we introduced functions islocalmax and islocalmin that support a data input A of double, single, or one of the integer types.
rng default
x = randi(10, 1, 20, 'int8');
ILM = islocalmax(x);
y = [x; ILM]
If you run those four commands, you'll see y is an int8 array and that most of the instances of 10 in x are local maxima, as is one of the instances of 9. To see that graphically:
% NaN values don't get plotted so preallocate then fill the local maxima
z = NaN(size(x));
z(ILM) = x(ILM);
ind = 1:numel(x);
plot(ind, x, '-', ind, z, 'ro');
The red circles correspond to the local maxima. The two plateaus each have one of their two points of equal height marked; see the documentation for islocalmax for more information about how you can customize how that behavior is handled.

Gefragt:

am 22 Mai 2013

Beantwortet:

am 30 Okt. 2017

Community Treasure Hunt

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

Start Hunting!

Translated by