Error: "Expected either a logical, char, int, fi, single, or double. Found an mxArray."
72 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Will Forfang
le 9 Fév 2013
Commenté : Juan Ramos Zayas
le 4 Mai 2023
I have a "Matlab Function" block in simulink containing the following code:
function found = FFTscan( signal, Fs )
PSD=real(fft(signal,2^nextpow2(length(signal)))); %est. power spec density
PSDn=PSD./max(PSD); %normalizes values from FFT
framen=[.0007 .0642 1 .394 .0063]; %frame for XCORR
xcn=xcorr(PSDn,framen); %xcorrelates normalized FFT w/ frame
xcn1 = xcn(((length(xcn)-1)/2):end); %turns 2sided xcorr into 1sided
coder.extrinsic('findpeaks');
[pks, loc] = findpeaks(xcn1,'MINPEAKHEIGHT',.4,'MINPEAKDISTANCE',30);
found=loc.*(Fs/length(signal)); %multiply index by Fs/N to get frequency
The purpose is to take a frame of an incoming signal in the time domain, transform it to the freq domain, then cross-correlate it with a frame of a known signal. This function works fine if I run it in the matlab workspace, but if I try to use it in a simulink model it throws the error mentioned in the title.
How can I use the data in "loc" as output for my simulink block?
Thanks,
-Will
2 commentaires
Walter Roberson
le 9 Fév 2013
Which line is the problem occurring on? If it is that last line, could you try breaking it up into an assignment to a temporary variable and then on the (new) next line, assign the temporary to "found" ? I am thinking the problem might have to do with the "loc" rather than the "found".
Réponse acceptée
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur String dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!