IP Library Granted Patent US 9,390,066
Granted Patent B2
US 9,390,066 · App. 13/509,427 · Granted Jul 12, 2016

Precision measurement of waveforms using deconvolution and windowing

Inventors: Paul Reed Smith (Annapolis, MD); Jack W. Smith (Belle Haven, VA); Frederick M. Slay (Okatie, SC)
Assignee: Digital Harmonic LLC
G06F17/141G06F17/14G10L25/00G10L25/18
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,390,066
App. No.
13/509,427
Granted
Jul 12, 2016
Kind
B2
Abstract

The invention consists of new ways of constructing a Measuring Matrices (MMs) including time deconvolution of Digital Fourier Transforms DFTs. Also, windowing functions specifically designed to facilitate time deconvolution may be used, and/or the DFTs may be performed in specific non-periodic ways to reduce artifacts and further facilitate deconvolution. These deconvolved DFTs may be used alone or correlated with other DFTs to produce a MM.

Claims (155)

1. A method implemented on a computer having one or more processors and one or more memory devices, the method comprising:

receiving an input signal in the form of a digital waveform signal, wherein the input signal comprises a plurality of amplitude values, and each amplitude value having a corresponding time value;

selecting, by a measurement engine, a series of overlapping time windows from the input signal, wherein each window has a beginning and an end, thereby defining time slices each indexed by an integer M, wherein a given time slice is a difference between the beginning of one window having index M and that of another having index M−1, or the difference between the end of one window having index M and that of another having index M−1;

transforming, by the measurement engine, using a decaying exponential windowing function on each time window in the series of overlapping time windows, the corresponding time and amplitude values into a plurality of transformed amplitude values, each associated with a corresponding frequency, to thereby form a first matrix indexed by the time slices and frequencies;

performing, by the measurement engine, time-domain deconvolution on the plurality of transformed amplitude values for each frequency index to thereby form a second matrix of deconvolved amplitude values indexed by the time slices and frequencies;

determining, by a comparing engine, a plurality of maxima and minima values in the second matrix;

marking, by a marking engine, the determined plurality of maxima and minima values to thereby form a measuring matrix indexed by the time slices and frequencies; and

outputting the measuring matrix to thereby reveal information associated with the input signal, wherein outputting includes at least one of storing, displaying, or transmitting the measuring matrix; and

wherein the engines are implemented using the one or more processors of the computer.

2. The method of claim 1 , further comprising performing time-domain deconvolution, for each frequency index, by applying the following formula:

X

T

=

S

T

-

(

1

-

α

)

S

T

-

1

+

(

1

-

α

)

N

X

T

-

N

α

,

wherein S T is a value of the first matrix, for a given frequency index, having time slice index T, α is a constant, and X T is a value of the second matrix having time slice index T and the same frequency index as S T , and N is an integer, equal or greater than 1, denoting the number of time slices in the window.

3. The method of claim 1 , further comprising selecting the plurality of time windows by choosing the beginning or end of each time slice to coincide with amplitude values that are smaller in magnitude than a predetermined constant, wherein a difference between the beginning and end of a time slice need not be the same for each time slice.

4. The method of claim 1 , further comprising, for a given value of the frequency index of the second matrix, performing a weighted averaging operation to reduce the magnitude of changes of a value of the second matrix as a function of the time slice index.

5. The method of claim 1 , further comprising:

selecting two or more series of overlapping time windows from the input signal;

transforming the corresponding time and amplitude values to thereby form two or more first matrices indexed by the time slices and frequencies;

performing time-domain deconvolution on the transformed amplitude values to thereby form two or more second matrices of deconvolved amplitude values;

determining a plurality of maxima and minima values in the two or more second matrices;

marking the determined plurality of maxima and minima values to thereby form a precision measuring matrix; and

outputting the precision measuring matrix to thereby reveal information associated with the input signal, wherein outputting includes at least one of storing, displaying, or transmitting the precision measuring matrix.

6. A non-transitory computer readable storage medium having program instructions stored thereon that, when executed by a computer having one or more processors and one or more memory devices, cause the computer to:

receive an input signal in the form of a digital waveform signal, wherein the input signal comprises a plurality of amplitude values, and each amplitude value having a corresponding time value;

select, by a measurement engine, a series of overlapping time windows from the input signal, wherein each window has a beginning and an end, thereby defining time slices each indexed by an integer M, wherein a given time slice is a difference between the beginning of one window having index M and that of another having index M−1, or the difference between the end of one window having index M and that of another having index M−1;

transform, by the measurement engine, using a decaying exponential windowing function on each time window in the series of overlapping time windows, the corresponding time and amplitude values into a plurality of transformed amplitude values, each associated with a corresponding frequency, to thereby form a first matrix indexed by the time slices and frequencies;

perform, by the measurement engine, time-domain deconvolution on the plurality of transformed amplitude values for each frequency index to thereby form a second matrix of deconvolved amplitude values indexed by the time slices and frequencies;

determine, by a comparing engine, a plurality of maxima and minima values in the second matrix;

mark, by a marking engine, the determined plurality of maxima and minima values to thereby form a measuring matrix indexed by the time slices and frequencies; and

output the measuring matrix to thereby reveal information associated with the input signal, wherein outputting includes at least one of storing, displaying, or transmitting the measuring matrix; and

wherein the engines are implemented using the one or more processors of the computer.

7. The non-transitory computer readable storage medium of claim 6 , wherein the program instructions further comprise computer readable code that causes the one or more processors to:

perform time-domain deconvolution, for each frequency index, by applying the following formula:

X

T

=

S

T

-

(

1

-

α

)

S

T

-

1

+

(

1

-

α

)

N

X

T

-

N

α

,

wherein S T is a value of the first matrix, for a given frequency index, having time slice index T, α is a constant, and X T is a value of the second matrix having time slice index T and the same frequency index as S T , and N is an integer denoting the number of time slices in the window.

8. The non-transitory computer readable storage medium of claim 6 , wherein the program instructions further comprise computer readable code that causes the one or more processors to:

select the plurality of time windows by choosing the beginning or end of each time slice to coincide with amplitude values that are smaller in magnitude than a predetermined constant, wherein a difference between the beginning and end of a time slice need not be the same for each time slice.

9. The non-transitory computer readable storage medium of claim 6 , wherein the program instructions further comprise computer readable code that causes the one or more processors to:

perform a weighted averaging operation, for a given value of the frequency index of the second matrix, to thereby reduce the magnitude of changes of a value of the second matrix as a function of the time slice index.

10. The non-transitory computer readable storage medium of claim 6 , wherein the program instructions further comprise computer readable code that causes the one or more processors to:

select two or more series of overlapping time windows from the input signal;

transform the corresponding time and amplitude values to thereby form two or more first matrices indexed by the time slices and frequencies;

perform time-domain deconvolution on the transformed amplitude values to thereby form two or more second matrices of deconvolved amplitude values;

determine a plurality of maxima and minima values in the two or more second matrices;

mark the determined plurality of maxima and minima values to thereby form a precision measuring matrix; and

output the precision measuring matrix to thereby reveal information associated with the input signal, wherein outputting includes at least one of storing, displaying, or transmitting the precision measuring matrix.

11. A signal processing system comprising:

a computer having one or more processors and one or more memory devices;

a measurement engine configured to receive an input signal in the form of a digital waveform signal, wherein the input signal comprises a plurality of amplitude values, and each amplitude value having a corresponding time value, the measurement engine being configured to:

select a series of overlapping time windows from the input signal, wherein each window has a beginning and an end, thereby defining time slices each indexed by an integer M, wherein a given time slice is a difference between the beginning of one window having index M and that of another having index M−1, or the difference between the end of one window having index M and that of another having index M−1,

transform, using a decaying exponential windowing function on each time window in the series of overlapping time windows, the corresponding time and amplitude values into a plurality of transformed amplitude values, each associated with a corresponding frequency, to thereby form a first matrix indexed by the time slices and frequencies, and

perform time-domain deconvolution on the plurality of transformed amplitude values for each frequency index to thereby form a second matrix of deconvolved amplitude values indexed by time slices and frequencies;

a comparing engine configured to determine a plurality of maxima and minima values in the second matrix;

a marking engine configured to mark the determined plurality of maxima and minima values to thereby form a measuring matrix indexed by the time slices and frequencies; and

an output module configured to output the measuring matrix to thereby reveal information associated with the input signal, wherein outputting includes at least one of storing, displaying, or transmitting the measuring matrix; and

wherein the engines are implemented using the one or more processors of the computer.

12. The system of claim 11 , wherein the measurement engine is further configured to perform time-domain deconvolution, for each frequency index, by applying the following formula:

X

T

=

S

T

-

(

1

-

α

)

S

T

-

1

+

(

1

-

α

)

N

X

T

-

N

α

,

wherein S T is a value of the first matrix, for a given frequency index, having time slice index T, α is a constant, and X T is a value of the second matrix having time slice index T and the same frequency index as S T , and N is an integer denoting the number of time slices in the window.

13. The system of claim 11 , wherein the measurement engine is further configured to select the plurality of time windows by choosing the beginning or end of each time slice to coincide with amplitude values that are smaller in magnitude than a predetermined constant, wherein a difference between the beginning and end of a time slice need not be the same for each time slice.

14. The system of claim 11 , wherein the measurement engine is further configured to perform, for a given value of the frequency index of the second matrix, a weighted averaging operation to reduce the magnitude of changes of a value of the second matrix as a function of the time slice index.

15. The system of claim 11 , wherein:

the measurement engine is further configured to:

select two or more series of overlapping time windows from the input signal;

transform the corresponding time and amplitude values to thereby form two or more first matrices indexed by the time slices and frequencies;

perform time-domain deconvolution on the transformed amplitude values to thereby form two or more second matrices of deconvolved amplitude values;

the comparing engine is further configured to determine a plurality of maxima and minima values in the two or more second matrices; and

the marking engine is further configured to mark the determined plurality of maxima and minima values to thereby form a precision measuring matrix,

wherein the output module is further configured to output the precision measuring matrix to thereby reveal information associated with the input signal, wherein outputting includes at least one of storing, displaying, or transmitting the precision measuring matrix.

Assignments (3)
SECURITY INTEREST Recorded Feb 13, 2023
From: DIGITAL HARMONIC LLC
To: DUPREE, DAVID; ARMITAGE, LESLIE; LAVIN, KEVIN
Reel/Frame 062672/0817 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2016
From: PAUL REED SMITH GUITARS LIMITED PARTNERSHIP
To: DIGITAL HARMONIC LLC
Reel/Frame 037466/0456 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 11, 2012
From: SMITH, PAUL REED; SMITH, JACK W.; SLAY, FREDERICK M.
To: PAUL REED SMITH GUITARS LIMITED PARTNERSHIP
Reel/Frame 028531/0211 →
Priority Claims (1)
WO PCT/US2009/064120 · Nov 12, 2009 · international
Continuity (2)
Provisional Application 61379100 · Sep 1, 2010
Related Publication 20130046805A1 · Feb 21, 2013