2

migrated from math-se... I am trying to calculate , or approximate the solution of following Fourier-sine transform problem that can be expressed as a contributions of periodic sources $f_i(x)$ and weights $a_i(x)$ :

$$F(k) = \int_{0}^\infty dx \space{} \space{} \sin(2\pi k x) \sum_{i=1}^N a_i(x) f_i(x) $$

Where $a_i(x)$ are known and have an analytical monotonous form ($\sim b_i x^{-c_i }$), and the numerical sum of all the individual sources $f_{tot}(x)=\sum_i f_i(x)$ is also known, but not the individual $f_i(x)$. The individual $f_i$ are unknown periodic functions (can be sums of sines, e.g. $f_1=sin(1.4x)+sin(4.9x)+...$ etc), so their expected transform should be peaks around their frequencies. All functions are real-valued and smooth.

I have tried to make the following approximation:

$$F(k) \sim \int_{0}^\infty dx \space{} f_{tot}(x) \space{} \sin(2\pi k x) \sum_{i=1}^N a_i(x) $$

and got that the peak positions in $F(k)$ are obtained but their relative amplitudes are not accurate as expected because each source $f_i(x)$ is not scaled properly by its corresponding $a_i(x)$.

Is there a way to further use the information I presented in order to capture or deconvolve the amplitudes as well as the peak positions? Will having $N$ be a relatively small integer, so the number of $f_i(x)$ and the frequency peaks will be relatively low (sparse) be helpful? or is there a general approach like svd or other matrix decompositions that can help here, and I just dont see how to use it?

dpdp
  • 93
  • 6
  • Any reason not to use the FFT algorithm directly since you have the composite waveform? – Dan Boschen Apr 19 '21 at 16:58
  • using the `fft` assumes that we have a function f(x) such that we can put it inside `fft(f(x))`. we dont. we have f_tot(), we have sum(a_i). but we dont have the full form `f(x)= sum(a_i f_i)` – dpdp Apr 20 '21 at 00:22
  • The fft algorithm takes a vector of samples, not a function- If you have a sampled waveform x consisting of N samples of the waveform in time x0, x1, x2, .... x_N, the fft is fft(x) taking N samples in time and returning N samples in frequency – Dan Boschen Apr 20 '21 at 01:04
  • so I guess you dont understand my question. I dont have f(x). Here is an example: f_1(x)= sin(x)^2 , f_2(x)=cos(x)^2, a_1=1, a_2=2. So f(x)=(sin x)^2+2cos(x)^2. But I *dont* have f_1 or f_2 . I only have f_tot , and a_1 a_2. in that case f_tot=f_1+f_2=1, etc, so that approximation I made doesn't work. – dpdp Apr 20 '21 at 02:14
  • Yes sorry I am still confused as to the question. For the FT of f_1(x)+f_2(x) =1 you would get the same result as f(x) = 1. (where x is your unit of time). In this case the result, for an FFT would be fft([1,1,1,1,1,1,1,1.....1]) for as many samples as you choose to use. Also and perhaps this is the issue: for cos(2pi f)^2 you will not get a peak around the frequency f, as there is no energy at that frequency due to the product. which is equal to 0.5 cos(0) + 0.5 cos(4 pi f). – Dan Boschen Apr 20 '21 at 02:29
  • Dan, the question was not on the example I gave. the question is for a general f(x). x has any unit you want it to have, not unit of time. The transform is not fft. it's a fourier-sine transfrom. I understand you want to help, but you simply dont understand the question. I asked about svd or other matrix decompositions , on sparsity and approximations etc. – dpdp Apr 20 '21 at 02:40
  • So if I follow.... you know the total sum of the functions without any additional weighting, but for your actual sine-transform result the functions are each weighted, and you know the individual weights, and from that you want to be able to estimate what that sine-transform result would be? – Dan Boschen Apr 20 '21 at 03:05
  • 1
    yes, at least approximately. elsewhere, if there is some sort of hierarchy or sparsity, in the linear algebra sense, there is usually a decomposition approach that allows to find a solution for an ill-determined system. here the case is a bit different, there is more information on one hand, on the other it's not a simple linear model. – dpdp Apr 20 '21 at 03:22
  • I think the issue is with non-linear functions (products etc) the peaks may not be around their frequencies; depending on the function the peaks can occur at any other harmonic so I am really not sure without any further info how you could resolve even approximately. – Dan Boschen Apr 20 '21 at 13:59
  • my intuition is that it is possible because with my crude approximation I already get correctly all the peaks positions, but their amplitudes are somewhat off. remember that N is small, and all the only "complexity" is that individual f_i's can have several frequencies, so they can be modeled as sums of sines and not products. – dpdp Apr 20 '21 at 16:13
  • Two cases: Case1: f1 = sin(x) f2 = sin(2x). Case 2: f1 = 2sin^2(x) f2 = 0. How would you know the difference to determine a1, a2? – Dan Boschen Apr 20 '21 at 16:17
  • 1
    that's easy. I have a1,a2. as explained in the question. We know f_tot=sum(f_i). and we know the all the a_i. (we actually also know their analytical form, so they are dictated by only a few parameters, and cannot produce peaks as they are featureless in x) – dpdp Apr 20 '21 at 16:19
  • 1
    we can also assume that f_i has the form sum(sin(m_i x)) where m is vector of real number, so f_1 can be something like sin(1.4x)+sin(5.3x)+... ( I edited and updated the question accordingly) – dpdp Apr 20 '21 at 16:33

0 Answers0