T O P I C R E V I E W |
jj45 |
Posted - 06/10/2004 : 1:16:17 PM I have a signal and a convolved data set and I am trying to get the response data by using the deconvolve function, but the two data sets are the same lengths so the the function is not working. Any ideas on how I can get the response data?
|
7 L A T E S T R E P L I E S (Newest First) |
easwar |
Posted - 06/15/2004 : 11:13:57 AM Hello,
Deconvolution is not a very "reliable" procedure - the deconvolution is performed by dividing the FFT of signal1 by FFT of signal2, and then performing inverse FFT on the divided values. This can lead to unreliable results due to division by very small numbers, fluctuation in data from noise etc. So there are inherent mathematical limitations.
Easwar OriginLab
|
jj45 |
Posted - 06/14/2004 : 8:08:12 PM Thanks so much, yes, now it is working. The only thing is that using the the sample data in FFT Deconvolution, the deconvolute Data1_Conv Data1_Signal Data1_A; does not give me the Resp data which is what I am trying to get.
|
Mike Buess |
Posted - 06/14/2004 : 2:43:22 PM You need to use the full dataset names. For example, if the columns are in wks Data1...
deconvolute Data1_Conv Data1_Signal Data1_A;
Mike Buess Origin WebRing Member |
jj45 |
Posted - 06/14/2004 : 1:49:06 PM Thanks again, I still can't figure out why I get the invalid data sets, so I tried to see if my data was the problem so I changed and used the sample FFT Deconvolution and I added a new column, A(Y) and made sure it has the properties of being Text & Numeric, and in the Script menu, I wrote deconvolute Conv Signal A; and the Invalid dataset(s) message still comes up. |
easwar |
Posted - 06/12/2004 : 08:51:51 AM Hi,
If the data columns all exist, and are of type Text&Numeric or Numeric, and are set as Y columns, this should not happen. Make sure you are specifying the correct column names, such as: deconvolute data1_c data1_b data1_d
If you need further assistance, please contact tech support, or post here.
Easwar OriginLab
|
jj45 |
Posted - 06/11/2004 : 5:34:33 PM Thanks for the code! When I run it, the Invalid dataset(s)! message pops up. I have my signal data in a column, my convoluted data in a column, and I created a column for the result. All the columns are the same length. Is that the problem?
|
easwar |
Posted - 06/11/2004 : 1:46:51 PM Hello,
The Deconvolution option from the menu has the restriction that the second signal that you specify (which typically is the response and the user is trying to remove the response from the measured signal to get the true signal) needs to be less than half in size of the first signal, and also has to be perfectly symmetric with odd number of points.
So in your case this does not work from the menu.
However, if you have version 7.5, there is a solution using Orign C programming. You can do the following:
1> create a new Origin C file in Code Builder, and place the code shown here in that file 2> add the fft_utils.c file (found in \Origin C\OriginLab subfolder) to your workspace 3> Compile and build
Then you can go to the script window and type a command such as:
deconvolute data1_c data1_b data1_d
where data1_c contains your convoluted signal, data1_b contains your true signal, and data1_d will then receive the result of the deconvolution, which will then be your response function.
Easwar OriginLab
// Code starts here----------- #include <Origin.h> #include <fft_utils.h>
void deconvolute(string strSignal1, string strSignal2, string strResult) { // Declare datasets and check validity Dataset ds1(strSignal1); Dataset ds2(strSignal2); Dataset ds3(strResult); if(!ds1 || !ds2 || !ds3) { printf("Invalid dataset(s)!\n"); return; } // Copy datsets to vectors to pass to fft_deconvolute function vector vec1, vec2, vec3; vec1 = ds1; vec2 = ds2;
int iRet = fft_deconvolute(vec1, vec2, vec3); if(0 != iRet) { printf ("FFT Deconvolution call returned error. Error code: %d\n", iRet); return; } // Copy result vector to result dataset ds3 = vec3; } // Code ends here-----------
Edited by - easwar on 06/11/2004 1:50:52 PM |
|
|