# was perfectly estimated. # Instead of limited to 15, figure out how many fit based on f0 and # sampling rate and report this "4 harmonics" and list the strength of each for x in range(2, 15): print '%.3f' % abs(f[i * x]), THD = sum([abs(f[i*x]) for x in range(2, 15)]) / abs(f[i]) print '\nTHD: %f%%' % (THD * 100) return if __name__ == '__main__': try: import sys files = sys.argv[1:] if files: for filename in files: try: analyze_channels(filename, THDN) except IOError: print 'Couldn\'t analyze "' + filename + '"\n' print '' else: sys.exit("You must provide at least one file to analyze") except BaseException as e: print('Error:') print(e) raise finally: # Otherwise Windows closes the window too quickly to read raw_input('(Press <Enter> to close)')
if __name__ == '__main__': try: import sys def freq_wrapper(signal, fs): freq = freq_from_fft(signal, fs) print '%f Hz' % freq files = sys.argv[1:] if files: for filename in files: try: start_time = time() analyze_channels(filename, freq_wrapper) print '\nTime elapsed: %.3f s\n' % (time() - start_time) except IOError: print 'Couldn\'t analyze "' + filename + '"\n' print '' else: sys.exit("You must provide at least one file to analyze") except BaseException as e: print('Error:') print(e) raise finally: # Otherwise Windows closes the window too quickly to read raw_input('(Press <Enter> to close)')
# Find the values for the first 15 harmonics. Includes harmonic peaks only, by definition # TODO: Should peak-find near each one, not just assume that fundamental was perfectly estimated. # Instead of limited to 15, figure out how many fit based on f0 and sampling rate and report this "4 harmonics" and list the strength of each for x in range(2, 15): print '%.3f' % abs(f[i * x]), THD = sum([abs(f[i*x]) for x in range(2,15)]) / abs(f[i]) print '\nTHD: %f%%' % (THD * 100) return if __name__ == '__main__': try: import sys files = sys.argv[1:] if files: for filename in files: try: analyze_channels(filename, THDN) except IOError: print 'Couldn\'t analyze "' + filename + '"\n' print '' else: sys.exit("You must provide at least one file to analyze") except BaseException as e: print('Error:') print(e) raise finally: raw_input('(Press <Enter> to close)') # Otherwise Windows closes the window too quickly to read