Error using arrayfun : Non scalar in Uniform output

102 vues (au cours des 30 derniers jours)
Mona Mahboob Kanafi
Mona Mahboob Kanafi le 5 Nov 2013
Hello,
I have a cell array (Z) of size (480*1) where in each row I have the individual double arrays that I want(e.g. 1*70 double). Now I want to apply a custom function to each row (each elements of the cell), for this I use arrayfun:
C = arrayfun(@ (x) (((a/length(Z))*(1/(2*pi))).*((abs(fftshift(fft(Z,1024))).^2))),1:480);
and I get this error:
Error using arrayfun Non-scalar in Uniform output, at index 1, output 1. Set 'UniformOutput' to false.
(Worth mentioning that I zeropad my fft, so the output data are all the same size(1*1024))

Réponses (1)

Azzi Abdelmalek
Azzi Abdelmalek le 5 Nov 2013
Modifié(e) : Azzi Abdelmalek le 5 Nov 2013
Add 'uniformoutput',false or 'un',0
C = arrayfun(@ (x) (((a/length(Z))*(1/(2*pi))).*((abs(fftshift(fft(Z,1024))).^2))),1:480,'un',0);
  4 commentaires
Mona Mahboob Kanafi
Mona Mahboob Kanafi le 5 Nov 2013
x in your expression is 1:480, while fft is going to be applied on each element of Z(as explained in my question) i.e. Z{1} which has 1*70 elements , then Z{2} having 1*58 elements,...
Azzi Abdelmalek
Azzi Abdelmalek le 5 Nov 2013
Ok, then use cellfun
C = cellfun(@ (x) (((a/length(Z))*(1/(2*pi))).*((abs(fftshift(fft(x,1024))).^2))),Z,'uniformoutput',false);

Connectez-vous pour commenter.

Catégories

En savoir plus sur Structures 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