However, despite studying this document and this one, I've been unable to completely understand the workings.
Perhaps some of you with more DSP knowledge then myself would be able to explain how the Prism works, perhaps as a series of basic functional blocks.
I'm particularly interested in how the integration block functions, as this seems to take a series of input samples prior to any multiplication of coefficients.
Could this mean that the filter is only suitable for sine wave inputs ?
The inventor, Dr Manus Henry, has some impressive claims for this device so maybe it deserves to be better known. The Prism has been the subject of a patent application.
Using single tone input I can see that the output peak gain goes down with increase of input frequency. However the output is at different frequency (altogether) and I am not surprised as we are modulating twice. So yes in terms of gain it acts as filter but it doesn't respect input frequency content. Can this be useful as filter?
Just a thought. I used following code (assuming h = 1):
clear all; clc;
N = 2000;
fmod = .0005; %modulation frequency
fi = 0.3; %input tone, up to +/-.5
x = sin(2*pi*(0:N-1)*fi);
h = 1;
f1 = sin(2*pi*h*(0:N-1)*fmod);
f2 = cos(2*pi*h*(0:N-1)*fmod);
y1 = x;
y2 = x;
y3 = x;
y4 = x;
for i = 2:length(x)
y1(i) = x(i)*f1(i)+y1(i-1);
y2(i) = x(i)*f2(i)+y2(i-1);
y3(i) = y1(i)*f1(i) + y3(i-1);
y4(i) = y2(i)*f2(i) + y4(i-1);
y = y3+y4;
Hi kaz. Thanks for the code. I'm going to experiment with it.
Based on that "What is a Prism" web page it appears that "Prism Processing" is a technique for estimating the instantaneous frequency, instantaneous amplitude (I wonder if they actually mean "instantaneous magnitude", i.e., envelope detection), and instantaneous phase of an input sine wave.
Looking at the lower-left block in the block diagram, that block sure does remind me of computing the real part of a single bin of a discrete Fourier transform (DFT). That is, the block appears to produce the sum of the products of a cosine wave (of frequency hm) and the input signal.
Later on in that web page the authors give algebraic expressions for the time-domain outputs Gsh(t) and Gch(t). Darn, I'd sure like to see the detailed step-by-step derivation of those equations! I don't understand how a sinc-squared factor shows up in those time-domain equations. I can imagine sinc factors showing up in an equation for the frequency response of a Prism Processor, but it's hard for me to see how sinc factors show up in the time-domain equations.
I've exchanged a few e-mails with Prof. Manus Henry (Oxford University) and I'm under the impression that he's writing articles giving more step-by-step details of his Prism Processing. I hope he's successful in having those articles published.
woodpecker, regarding the manuscript you provided, I have the published PDF-file version of that manuscript and tried to include here in my reply using this web page's above red paper clip icon. But, alas, the software failed and I was unsuccessful.
That published paper (PDF file) can be downloaded from:
That PDF file is like a lady's bikini. What it shows is interesting, what it doesn't show is vital.
I'm going to mess around, ...oops, I mean experiment with kaz's code to see what I can learn from it.
Hi Rick and kaz,
Good to get your input on the Prism. Much of the documentation seems rather unclear and contradictory e.g. In the "bikini pdf" it states:
" Each new input value is multiplied by the latest value of a modulating function with frequency hm Hz."
This seems to imply two things: First, that the Prism is a baseband filter, and secondly, that the multiplication is taking place for each new sample - obviously, a very inefficient way of filtering, with a relatively high sample rate.
Can we assume that this filter is only suitable for a sine wave input (maybe with some noise) ? This would certainly simplify the design of many filters!
I gather the Prism uses the technique known as Romberg Integration. Could this be suitable as a fast method for determining the frequency and amplitude (from phase and magnitude) of a sine wave ?
Thanks for your code kaz. This runs ok in Octave, so I'll experiment futher. Also Rick, you mention the algebraic expressions for Gsh(t) and Gch(t). I'll check these out to see if it leads anywhere.
Years ago, there was a song by Johnny Nash called "There are more questions than answers." Had he discovered the Prism ? . . .