Reverberation Time
Mostrar comentarios más antiguos
trying to design a T60 measurement function. I think i've worked it out but every time i run the function it crashes Matlab. I must have an infinite loop or using a very inefficient way of calculating the t60 but i can't see why it's not working. Any help would be much appreciated thank you
function [ T60Plot ] = T60Plot(input,Fs)
%UNTITLED3 Summary of this function goes here
% Detailed explanation goes here
modInput=sqrt(input.^2);
L=length(input);
maxA = cumsum(modInput);
invertModInput = modInput';
for n = 1:L; n1 = 0;
if 20*log10(sum(modInput(n:L))./maxA)<=-60;
n1 = n1;
else
n1 = n1+1;
end
end
T60Plot = n1/Fs;
end
1 comentario
Walter Roberson
el 11 de Mayo de 2012
Do not use the same output variable name as your function name.
Respuestas (2)
Walter Roberson
el 11 de Mayo de 2012
0 votos
You set n1 to 0 each iteration through the "for" loop. The "n1" after the iteration of a loop is thus always going to be 0 or 1. Then you go on to the next iteration, overwriting n1. The result would be the same as if your "for" went from L:L instead of 1:L .
Categorías
Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!