The Origin Forum
File Exchange
Try Origin for Free
The Origin Forum
Home | Profile | Register | Active Topics | Members | Search | FAQ | Send File to Tech support
Username:
Password:
Save Password
Forgot your Password? | Admin Options

 All Forums
 Origin Forum
 Origin Forum
 Deconvolve?
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic Lock Topic Edit Topic Delete Topic New Topic Reply to Topic

jj45

USA
Posts

Posted - 06/10/2004 :  1:16:17 PM  Show Profile  Edit Topic  Reply with Quote  View user's IP address  Delete Topic
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?

easwar

USA
1964 Posts

Posted - 06/11/2004 :  1:46:51 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
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
Go to Top of Page

jj45

USA
Posts

Posted - 06/11/2004 :  5:34:33 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
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?

Go to Top of Page

easwar

USA
1964 Posts

Posted - 06/12/2004 :  08:51:51 AM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
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

Go to Top of Page

jj45

USA
Posts

Posted - 06/14/2004 :  1:49:06 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
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.
Go to Top of Page

Mike Buess

USA
3037 Posts

Posted - 06/14/2004 :  2:43:22 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
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
Go to Top of Page

jj45

USA
Posts

Posted - 06/14/2004 :  8:08:12 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
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.

Go to Top of Page

easwar

USA
1964 Posts

Posted - 06/15/2004 :  11:13:57 AM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
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

Go to Top of Page
  Previous Topic Topic Next Topic Lock Topic Edit Topic Delete Topic New Topic Reply to Topic
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
The Origin Forum © 2020 Originlab Corporation Go To Top Of Page
Snitz Forums 2000