Author |
Topic |
|
kdsaransh
India
89 Posts |
Posted - 11/28/2016 : 04:44:10 AM
|
Hello,
I am integrating col(2) wrt col(1)and placinig the value of area in another sheet in col(2). This is what this code solves.
Now i also want to read the value of time1 (x1) and time2 (x2)in two column next to each other.
ii=1; Doc -ef W { if (page.longname$!="Average Current") { integ1 iy:=(Col(1), Col(2)) area:=area; // integrate col 2 wrt col 1 range rTemp = ["Average Current"]1!col("Area")[$(ii)]; rTemp = area; ii++; } };
Please help.
Thanks |
|
kdsaransh
India
89 Posts |
Posted - 11/28/2016 : 05:07:01 AM
|
Also the integration is not in sequence. That is if i have 10 books named 1,2,3,4,5,6,7,8,9 and 10. Then the integration should be performed in sequence, but is not going well with code. The integration is random and hence the area value is also random. |
|
|
yuki_wu
896 Posts |
Posted - 11/28/2016 : 9:42:46 PM
|
Hi,
In fact, I am not sure whether I understand your question fully. Do you want to know the beginning x(x1) and the ending x(x2)? If so, you can modify your script like below:
integ1 iy:=(Col(1), Col(2)) area:=darea x1:=dbeginning x2:=dending;
range rArea = ["Average Current"]1!col("Area")[$(ii)];
range rBeginning = ["Average Current"]1!col("Begin")[$(ii)];
range rEnding = ["Average Current"]1!col("End")[$(ii)];
rArea = darea;
rBeginning = dbeginning;
rEnding = dending;
Also, you can find more information about Integ1 X-Function here: http://www.originlab.com/doc/X-Function/ref/Integ1
If not, would you please explain more clearly about what is time1(x1) and time2(x2) you want to know? You can upload an image in this post.
About the sequence of the loop, perhaps you can find the answer in this post: http://www.originlab.com/forum/topic.asp?TOPIC_ID=22902
Hope it can be some help.
Regards, Yuki OriginLab
|
Edited by - yuki_wu on 11/29/2016 10:12:13 PM |
|
|
kdsaransh
India
89 Posts |
Posted - 11/30/2016 : 02:16:06 AM
|
Dear yuki,
Thanks for the reply.
I have two cols A(x) and B(y). A(x)is time col and B(y) is current col. Now i want to integrate col(B) wrt col(A). After integration, i get a value of area. The result log shows the value of area and the time (x1) and time (x2).
Now i want to put this value of area in col 2 of another sheet named as "Average Current". Also the value of time t(x1) and t(x2) in col 4 and 5 respectively. Now i have many sheets and i want to do this same operation for all the sheets.
The value of each area and associated time (x1)and time (x2)should be in the file " Average Current".
Many many thanks.... |
|
|
yuki_wu
896 Posts |
Posted - 11/30/2016 : 04:46:25 AM
|
Hi,
I think you could modify your code as what I mentioned above:
ii=1;
Doc -ef W
{
if (page.longname$!="Average Current")
{
integ1 iy:=(col(1), col(2)) area:=darea x1:=dbeginning x2:=dending;
range rArea = ["Average Current"]1!col(2)[$(ii)];
range rBeginning = ["Average Current"]1!col(4)[$(ii)];
range rEnding = ["Average Current"]1!col(5)[$(ii)];
rArea = darea;
rBeginning = dbeginning;
rEnding = dending;
ii++;
}
};
Hope it helps.
Regards, Yuki OriginLab
|
|
|
kdsaransh
India
89 Posts |
Posted - 11/30/2016 : 07:15:38 AM
|
Thanks yuki,
but the sequence problem is still there. I am not able to figure out.
Any help ...
Regards,
|
|
|
yuki_wu
896 Posts |
Posted - 12/01/2016 : 02:18:40 AM
|
Hi,
We have discussed the sequence problem in this post: http://www.originlab.com/forum/topic.asp?TOPIC_ID=22902
As what I mentioned in that post, the looping sequence follows the z-order. If you want to loop over the workbooks as you desired, the way that Alexei shared is useful.
Regards, Yuki OriginLab
|
|
|
kdsaransh
India
89 Posts |
Posted - 12/01/2016 : 11:35:55 AM
|
Hello yuki,
I tried to put alexie code in between your code, but still the looping problem persists. Also the z order is out of my understanding.
if you could suggest.
|
|
|
yuki_wu
896 Posts |
|
kdsaransh
India
89 Posts |
Posted - 12/05/2016 : 02:04:41 AM
|
Dear yuki,
Can you pls modify the code accordingly. It will be very helpful...
Thanks in aDVANCE |
|
|
yuki_wu
896 Posts |
Posted - 12/05/2016 : 03:02:22 AM
|
Hi,
StringArray saWBNames;
doc -e W
{
saWBNames.Add(%H)
};
saWBNames.Sort();
loop(ii,1,saWBNames.GetSize())
{
win -a %(saWBNames.GetAt(ii)$);
if (page.longname$!="Average Current")
{
integ1 iy:=(col(1), col(2)) area:=darea x1:=dbeginning x2:=dending;
range rArea = ["Average Current"]1!col(2)[$(ii)];
range rBeginning = ["Average Current"]1!col(4)[$(ii)];
range rEnding = ["Average Current"]1!col(5)[$(ii)];
rArea = darea;
rBeginning = dbeginning;
rEnding = dending;
ii++;
}
}
Yuki OriginLab |
|
|
kdsaransh
India
89 Posts |
Posted - 12/05/2016 : 05:43:58 AM
|
Dear Yuki,
As you can see from the attached pic that the integration is still not in sequence. The integration should start from 100hz and end at 200khz. but it goes like: 100hz, 100khz, 10khz, 120khz, 150khz, 15khz, 1khz, 200hz and so on.
Regards, Rajesh Agarwal
|
|
|
aplotnikov
Germany
162 Posts |
Posted - 12/05/2016 : 08:23:58 AM
|
Hi,
1. Place workbooks with data to integrate in a separate project folder. 2. Use "doc -ef" instead of "doc -e" starting your script in the folder containing selected workbooks only.
or
make the list of the workbooks manually - either as a workbook or as a string array - with explicit input of workbook names in desired order. Then you can loop over the created dataset or string array.
Regards,
Alexei |
Edited by - aplotnikov on 12/05/2016 08:24:56 AM |
|
|
kdsaransh
India
89 Posts |
Posted - 12/07/2016 : 05:40:20 AM
|
Dear ,
As you can see that the workbooks are placed in a separate folder. replacing doc -ef" instead of "doc -e gives me the same result.
Thanks and regards, Rajesh Agarwal |
|
|
aplotnikov
Germany
162 Posts |
Posted - 12/07/2016 : 05:53:17 AM
|
Hi,
please read our replies carefully. I wrote "workbooks with data to integrate" - not ALL the workbooks in your project! That means, ONLY those you need to integrate corresponding your selection criteria. Sorry, but I cannot explain more precisely.
Regards,
Alexei |
|
|
kdsaransh
India
89 Posts |
Posted - 12/07/2016 : 05:57:23 AM
|
Dear alexei,
Sorry that i am not able to understand.
I have around 19 workbooks starting from 100hz to 200khz and i want to integrate all of them. There is no other workbook that except the ones i want to integrate.
thanks |
|
|
aplotnikov
Germany
162 Posts |
Posted - 12/07/2016 : 06:22:25 AM
|
Hi,
1. Create workbook "Book1". 2. Fill column "A" of the workbook "Book1" with the _SHORT_ names of your workbooks to integrate in _desired_ order (e.g., "A100Hz",..., "A1kHz",...,"A100kHz",...). 3. loop(ii, 1, [Book1]1!wks.maxRows) {win -a %(Book1_A[ii]$);...}
or
rename your workbooks (_SHORT_ names!) to make possible a _correct_ sort operation on a string array. Like "A0001kHz", "A0002kHz",..., "A0010kHz",..., "A0200kHz",...,"A2000kHz", where "A0200kHz" corresponds 20 kHz.
Regards,
Alexei |
Edited by - aplotnikov on 12/07/2016 06:24:00 AM |
|
|
kdsaransh
India
89 Posts |
Posted - 12/07/2016 : 07:33:18 AM
|
Hello,
Thanks, Can you pls modify the below code according to option 1 or 2, so that i may use it.
ii=1; Doc -ef W { if (page.longname$!="Average Current") { integ1 iy:=(col(1), col(2)) area:=darea x1:=dbeginning x2:=dending; range rArea = ["Average Current"]1!col(2)[$(ii)]; range rBeginning = ["Average Current"]1!col(4)[$(ii)]; range rEnding = ["Average Current"]1!col(5)[$(ii)]; rArea = darea; rBeginning = dbeginning; rEnding = dending; ii++; } }; Again thanks a lot
Best regards,
|
|
|
kdsaransh
India
89 Posts |
Posted - 12/08/2016 : 07:30:21 AM
|
Hi,
OR if i could rename all the workbooks as you had suggested.
Regards |
|
|
kdsaransh
India
89 Posts |
Posted - 12/12/2016 : 01:34:53 AM
|
Hi,
Waiting for some help...
Regards, Rajesh Agarwal
|
|
|
yuki_wu
896 Posts |
Posted - 12/12/2016 : 10:41:58 PM
|
Hi,
It seems to me that the way suggested by Alexei is quite clear.
You can just rename your worksheets like "A0001kHz", "A0002kHz",..., "A0010kHz",..., "A0200kHz",...,"A2000kHz", where "A0200kHz" corresponds 20 kHz, and then use the code I gave above:
StringArray saWBNames;
doc -e W
{
saWBNames.Add(%H)
};
saWBNames.Sort();
loop(ii,1,saWBNames.GetSize())
{
win -a %(saWBNames.GetAt(ii)$);
if (page.longname$!="Average Current")
{
integ1 iy:=(col(1), col(2)) area:=darea x1:=dbeginning x2:=dending;
range rArea = ["Average Current"]1!col(2)[$(ii)];
range rBeginning = ["Average Current"]1!col(4)[$(ii)];
range rEnding = ["Average Current"]1!col(5)[$(ii)];
rArea = darea;
rBeginning = dbeginning;
rEnding = dending;
ii++;
}
}
Yuki OriginLab |
|
|
kdsaransh
India
89 Posts |
Posted - 12/13/2016 : 12:03:00 AM
|
Dear Yuki,
If you could also include the code for renaming the worksheets as said, because it is very difficult to rename lets say 100 workbooks manually.
Thanks and regards, Rajesh Agarwal |
|
|
yuki_wu
896 Posts |
Posted - 12/13/2016 : 02:48:45 AM
|
Hi,
If you don't want to rename your worksheet manually, you could try the first way that Alexei suggested.
Or you can rename worksheet with if structure:
doc -ef W
{
if(condition that you set)
{
page.longname$ = NewWorkbookName;
layer.name$ = NewWorksheetName;
}
}
Yuki OriginLab |
Edited by - yuki_wu on 12/13/2016 02:49:44 AM |
|
|
|
Topic |
|
|
|