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 for Programming
 LabTalk Forum
 Finding a threshold value
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic Lock Topic Edit Topic Delete Topic New Topic Reply to Topic

tib

Switzerland
105 Posts

Posted - 01/18/2002 :  08:32:34 AM  Show Profile  Edit Topic  Reply with Quote  View user's IP address  Delete Topic

I have a y-dataset which is increasing (or decreasing) with x.
Now, I want to display the data only starting from when the y-value is above a certain noise level.

The functions xindex(x,dataset) and xindex1(x,dataset) are not helpful for this task since they give me only a x-threshold. The list(value,dataset) function would be ideal, unfortunately it makes an exact comparison, so it's useless for my purpose.

Futhermore, I want to display the data of a y1-column beginning from when the value of a y2 column (they have the same x-column) is above a certain threshold.

The only way I found is to scan the columns "manually".

THR=4e-11; // threshold value;
NRW=data1!wks.maxRows; // number of rows;
loop (ii,1,NRW) {
if (data1_b[ii]>THR) {IDX=ii; break;};
};
type "The row index where the value is above $(THR) is $(ii)";

Maybe anybody knows about a better and probably faster method?
Isn't there any function like yindex(y,ydataset)?

An other question concerning xindex1(x,dataset): when I fill x columns data1_a with 1,2,3,4... and data1_b with any values and I perform the command xindex1(0,data1_b) I get back 2. But shouldn't it be 1?

Mike Buess

USA
3037 Posts

Posted - 01/18/2002 :  12:52:41 PM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
This may be a little better...

tmp=(data1_b>THR)?1:0;
ii=list(1,tmp); del tmp;
type "The row index where the value is above $(THR) is $(ii)";

The list() function works here because the values in tmp are exactly 0 and 1.

Mike Buess
Origin WebRing Member
Go to Top of Page

tib

Switzerland
105 Posts

Posted - 01/23/2002 :  05:06:06 AM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
Mike, this structure is really good!
Both functions are in the manual. But I would like to see more of such combinations as examples there. I thought that finding thresholds and limits are daily tasks that there even should be a single function for it.

1. search for the first number: value > THR
TMP=(Data1_B>THR)?1:0;
LOW=list(1,TMP);
a) the first number > THR is at row index 50
b) all numbers > THR
c) no number > THR
The results of your formula are:
1a) LOW=50
1b) LOW=1
1c) LOW=0
All these results are OK.
With this, I could limit a dataset by set Data1_B -b LOW;

But!

2. search for the last number: value < THR
TMP=(Data1_B < THR)?1:0;
HIG=list(0,TMP);
a) the last number < THR is at row index 50
b) all numbers < THR
c) no number < THR
The results of your formula are:
2a) HIG=51 50 would be right
2b) HIG=0 last index of last row would be nice
2c) HIG=1 0 would be nice;

I want to set the end range of the dataset by set Data1_B -e HIG;

In that case a have to add a sequence:
HIG-=1; // subtract 1;
if (HIG==-1) {get Data1_B -e AAA; HIG=AAA};

That should work. But maybe you also have a better solution for that?
Thanks a lot! Tilman.

By the way, do you know if there is a command for resetting the dataset to full range?
AAA=Data1!wks.maxRows; set Data1_B -e AAA;
Go to Top of Page

Mike Buess

USA
3037 Posts

Posted - 01/23/2002 :  09:57:09 AM  Show Profile  Edit Reply  Reply with Quote  View user's IP address  Delete Reply
Hi Tilman,

Actually, there is a built-in Origin function called "tReplace" that seems suited for this sort of thing. I have never used it, but according to its help file description it should work for you. Search for it in LabTalk help.

Note: This function was introduced in Patch 2 for Origin 6.1 and more documentation is available in the release notes. Those notes say that it is much faster than the ternary operator method that I suggested.

Mike Buess
Origin WebRing Member

Edited by - Mike Buess on 01/23/2002 13:59:19
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