1
$\begingroup$

I have several equations and each have their own individual frequencies and amplitudes. I would like to sum the equations together and adjust the individual phases, phase1, phase2, and phase3 to keep the total amplitude value of eq_total under a specific value like $0.8$. I know I can normalize the signal, but for my purposes I need to have this controlled by changing/finding the values for just the phases in phase1, phase2, and phase3 that will do this.

Example: eq1=0.2*cos(2pi*t*3+phase1)+vertical_offset1 eq2=0.7*cos(2pi*t*9+phase2)+vertical_offset2 eq3=0.8*cos(2pi*t*5+phase3)+vertical_offset3  eq_total=eq1+eq2+eq3 

Is there a way to solve for the three phases so that the amplitude of the summed signals in eq_total never goes over $0.8$ by just adjusting/finding the values of the phases? Here's a picture of a geogebra applet I tested this idea with. https://www.dropbox.com/s/c60uqc9dqe4e00l/amp_phase_pic.png?dl=0

Here's the geogebra ggb file I used to edit/test idea with. (I used this to see if my idea would work) Java is required if you want to dynamically interact with the applet https://www.dropbox.com/s/u4mvi6r7yuehp4m/sin_find_phases_example.ggb?dl=0

I'm using matlab/octave Thanks

1 Answers 1

0

It looks like something which can be solved using Brute Force method in MATLAB.

Create a 3D grid for the phases.
Evaluate the sum of the function at each point on the grid.
Create a mask on the grid for the values which satisfy your needs.

Keep those values as a LUT Table.

  • 0
    yes, t could be 0 to 10 seconds or 0 to any seconds2017-07-28