2013-06-24 8 views
-1
function f = lowpassFIR(sample) 

%Calculates Finite Impulse Response low pass filter coefficient 
%using the windowing methods as well 

passEdge = 100; 
StopbandAtt = 20; 
passbandRip =.05; 
transWidth = 10; 
Fs = sample; 





%Step One: select number of coefficients% 
deltaF = transWidth/Fs; 

%Normalize for each window 


rectN = round(0.9/deltaF); 
hannN = round(3.1/deltaF); 
hammN = round(3.3/deltaF); 
blackN = round(5.5/deltaF); 


rectPos = rectN/2; 
rectNeg = (rectPos*-1); 


%For the Vector Array 
%rect = rectNeg:rectPos; 

deltaSum= passEdge + (transWidth/2); 
deltaF2= deltaSum/Fs; 

for i = [rectPos:rectNeg] 

    %iterate through each value and plug into function in for loop 
    %each output of the function will be stored into another array 
f= 2*i; 
end 





end 

Je l'ai modifié, et pense que cela fonctionnerait, mais j'obtenir l'erreur ...Matrice pour la boucle Matlab

Erreur dans lowpassFIR (ligne 6) passEdge = 100;

L'argument de sortie "f" (et peut-être d'autres) n'a pas été affecté pendant l'appel à "/Users/sergiogonzalez-palavicini/Documents/MATLAB/lowpassFIR.m>lowpassFIR".

+4

Il est pas très clair .... – Oli

+0

Check out [ce poste] (http://stackoverflow.com/questions/758736/how-do-i-iterate-through-each-element-in -an-n-dimensional-matrix-in-matlab), cela peut être utile –

+0

Cela dépend de la fonction, si elle est vectorisée alors vous pouvez simplement faire 'Y = f (rect)'. Pouvez-vous poster la fonction réelle? – Dan

Répondre

1

Vous pouvez utiliser arrayfun:

>>> function a = func(b) 
> a = b*2; 
> end 
>>> arrayfun(@func,1:10) 
ans = 

    2 4 6 8 10 12 14 16 18 20 

>>> 

Il prend une fonction comme premier paramètre et un tableau comme second paramètre.
Il renvoie un autre tableau avec la fonction appliquée à chaque élément du tableau d'origine.
Documentation

+0

Vous devrez utiliser l'option ''UniformOutput ', false' si l'OP veut que chaque sortie soit stockée dans un tableau différent (cellule). –

+0

Il devrait être plus clair maintenant! – user2514874