ECG filter probs..
Hi guys....
I am actually developing a Heart rate variability measuring meter. I need to accquire ECG in real time which i am able to do but with loot of added noise. I have attached the pics of the ECG ( doest not much look like it !!!) dat i am able to accquire. Can sme 1 tell me how can i filter it out.....Notch with 50 Hz is one solution i know can u suggest me any thing better .
The Band pass filter in my ckt has a BW of 0.01 to 106 Hz jus sufficient for the ECG signal of 0.05 -120 Hz. But i suppose my circuit is practically even very high freqs(shud i go for a Low Pass Filter)...can ny 1 plz help me out.
Attachments:
sabiq1.JPG 161 KB
FINAL.JPG 145 KB
sabiq3.JPG 170 KB
Joanna,
From the waveforms it looks as though you have some power line interference. This is quite common in ECG applications and is the major reason why differential input or instrumentation amplifiers are usually used. If you cannot eliminate the interference before capturing the data, a notch filter may be a good choice.
Other possibilities: (1) Try to set the threshold for identifying the peaks above the interference. In the images you posted the signal to noise ratio appears high enough that this might work fairly well. You could test for peaks that occur too close together to be valid RR intervals. This won't be perfect but should flag the most serious errors.
(2) Try a high pass filter with the cutoff above the power line frequency. Since you are interested in heart rate variability, you only need the locations of the QRS complexes to calculate RR intervals. If the QRS complexes are comparable in width to the power line frequency waveform, this will not work well.
(3) Use another channel and try to capture the power line interference only. Then scale that and subtract it from the data channels. This creates a pseudo-differential signal and may help. Phase shifts can be a problem for good cancellation.
Lynn
Similar Messages
-
is there any way that i can filter my Libary to display muisc archives instead of podcasting stuff so that i can view all my podcasting in the podciasting section and not the libary part
thanx
Althon 64 3800+ Windows XP Prono not in the main library, there are no filters. You can have all the podcast show in one "Grouping" tho by hitting "Gener"
-
hi i need to design a notch filter for eliminating ECG hum..i am working with NI ELVIS work station...and LABVIEW 8.0. Unfortunately it needs an addon software "Digital filter design toolkit", which i dont have. Its urgent..can some 1 plzz help me out.
Hi and Happy Halloween,
Depending on the license you have for LabVIEW and the toolsets you have installed, you may be able to have a "notch" filter. I would search your pallet for "Bandstop" because a notch is a type of Bandstop filter. Or, you can make a notch out of a high-pass and a low-pass or you can use the filter express VI. If these VIs are not on your pallet than you probably only have the LabVIEW Base and thus, cannot use these options.
Charlie M. CLD -
How do I use adaptive LMS filter with waveforms?
In the attached image file and VI, I am reading a .lvm file which contains abdominal ECG (AECG). AECG contains both maternal and fetal ECGs i.e. MECG and FECG respectively. I'm trying to input AECG and MECG to the LMS FIR filter so that I can get FECG as the error signal, e(n). In my VI, e(n) is coming out as a 16-Bit Double but I want it to come out as a waveform. How do I go about it?
NOTE: Since this forum doesn't allow uploading .lvm files, I have share in Google Drive here. You can use this file to run the attached VI.
Attachments:
AECG_NI.vi 38 KBStep 1. Dont use the express VI. It makes assumptions about the data that don't appear to be valid.
Mike...
PS: The lvm is just a text file. Change the file extension to txt and upload away.
Certified Professional Instructor
Certified LabVIEW Architect
LabVIEW Champion
"... after all, He's not a tame lion..."
Be thinking ahead and mark your dance card for NI Week 2015 now: TS 6139 - Object Oriented First Steps -
iMac 10.9.4 software updates last week is apparent cause of my Corel Painter X3 now crashing. I ran Disk Utility check - no probs there. I reinstalled Painter X3 (after first uninstalling X3), still no success. Online Mac support suggest I use MacCleaner - tried at online Mac store & was referred to 0800 tech support for guidance - still waiting for reply.
Launch the Console application in any of the following ways:
☞ Enter the first few letters of its name into a Spotlight search. Select it in the results (it should be at the top.)
☞ In the Finder, select Go ▹ Utilities from the menu bar, or press the key combination shift-command-U. The application is in the folder that opens.
☞ Open LaunchPad. Click Utilities, then Console in the icon grid.
Step 1
For this step, the title of the Console window should be All Messages. If it isn't, select
SYSTEM LOG QUERIES ▹ All Messages
from the log list on the left. If you don't see that list, select
View ▹ Show Log List
from the menu bar at the top of the screen.
In the top right corner of the Console window, there's a search box labeled Filter. Initially the words "String Matching" are shown in that box. Enter the name of the crashed application or process. For example, if iTunes crashed, you would enter "iTunes" (without the quotes.)
Each message in the log begins with the date and time when it was entered. Select the messages from the time of the last crash, if any. Copy them to the Clipboard by pressing the key combination command-C. Paste into a reply to this message by pressing command-V.
☞ The log contains a vast amount of information, almost all of which is irrelevant to solving any particular problem. When posting a log extract, be selective. A few dozen lines are almost always more than enough.
Please don't indiscriminately dump thousands of lines from the log into this discussion.
Please don't post screenshots of log messages—post the text.
☞ Some private information, such as your name, may appear in the log. Anonymize before posting.
Step 2
In the Console window, select
DIAGNOSTIC AND USAGE INFORMATION ▹ User Diagnostic Reports
(not Diagnostic and Usage Messages) from the log list on the left. There is a disclosure triangle to the left of the list item. If the triangle is pointing to the right, click it so that it points down. You'll see a list of crash reports. The name of each report starts with the name of the process, and ends with ".crash". Select the most recent report related to the process in question. The contents of the report will appear on the right. Use copy and paste to post the entire contents—the text, not a screenshot.
I know the report is long, maybe several hundred lines. Please post all of it anyway.
If you don't see any reports listed, but you know there was a crash, you may have chosen Diagnostic and Usage Messages from the log list. Choose DIAGNOSTIC AND USAGE INFORMATION instead.
In the interest of privacy, I suggest that, before posting, you edit out the “Anonymous UUID,” a long string of letters, numbers, and dashes in the header of the report, if it’s present (it may not be.)
Please don’t post other kinds of diagnostic report—they're very long and rarely helpful. -
Agent filter location in web.xml for websphere v7.0
In the document:
Sun OpenSSO Enterprise Policy Agent 3.0 Guide for IBM WebSphere Application Server 6.1/7.0 and WebSphere Portal Server 6.1
I'm and tying to do this part:
Installing the Agent Filter for the WebSphere Application Server 6.1/7.0 Administration Console
for my WebSphere 7.0 installation.
My issue is the placement of the second filter.
<filter-mapping>
<filter-name>Agent</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
the doc says to put it under:
<filter-mapping>
<filter-name>WSCUrlFilter</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>WSCUrlFilter</filter-name>
<url-pattern>/federatedlogoff</url-pattern>
</filter-mapping>
however, my Websphere 7.0 web.xml does not have this section in the file.
Can some one assist me with proper placement?
here is the first few lines of my xml:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="WebApp_1" version="2.4" xsi:schemaLocation="http://java.sun.co
m/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>isclite</display-name>
<filter>
<filter-name>WSCUrlFilter</filter-name>
<filter-class>com.ibm.ws.console.core.servlet.WSCUrlFilter</filter-class>
</filter>
<filter>
<filter-name>Trace_Tree_Cache_Init_Filter</filter-name>
<filter-class>com.ibm.ws.console.probdetermination.trace.tree.TraceTreeCacheInit</filter-class>
</filter>
<filter-mapping>
<filter-name>WSCUrlFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Trace_Tree_Cache_Init_Filter</filter-name>
<servlet-name>Trace Tree Servlet</servlet-name>
</filter-mapping>
<listener>
<listener-class>com.ibm.isclite.SessionListener</listener-class>
</listener>
<listener>
<listener-class>com.ibm.ws.console.appmanagement.SessionListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/config/struts-config.xml</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>SecureCleanup</servlet-name>
<servlet-class>com.ibm.ws.console.core.servlet.SecureCleanupServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>FederationServlet</servlet-name>
<servlet-class>com.ibm.ws.console.core.servlet.FederationServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>ProfileSelectionServlet</servlet-name>
<servlet-class>com.ibm.ws.console.core.servlet.ProfileSelectionServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>ConsoleCSS</servlet-name>
<jsp-file>secure/layouts/console_css.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>EventInitializer</servlet-name>
<servlet-class>com.ibm.ws.console.events.EventListenerServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>downloadFile</servlet-name>
<servlet-class>com.ibm.ws.console.core.servlet.DownloadFileServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>StatusServlet</servlet-name>
<servlet-class>com.ibm.ws.console.core.servlet.StatusServlet</servlet-class>
</servlet>
<servlet>See below. You just have additional probe filters.
862059 wrote:
In the document:
Sun OpenSSO Enterprise Policy Agent 3.0 Guide for IBM WebSphere Application Server 6.1/7.0 and WebSphere Portal Server 6.1
I'm and tying to do this part:
Installing the Agent Filter for the WebSphere Application Server 6.1/7.0 Administration Console
for my WebSphere 7.0 installation.
My issue is the placement of the second filter.
<filter-mapping>
<filter-name>Agent</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
the doc says to put it under:
<filter-mapping>
<filter-name>WSCUrlFilter</filter-name>
<servlet-name>action</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>WSCUrlFilter</filter-name>
<url-pattern>/federatedlogoff</url-pattern>
</filter-mapping>
however, my Websphere 7.0 web.xml does not have this section in the file.
Can some one assist me with proper placement?
here is the first few lines of my xml:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="WebApp_1" version="2.4" xsi:schemaLocation="http://java.sun.co
m/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>isclite</display-name>
<filter>
<filter-name>WSCUrlFilter</filter-name>
<filter-class>com.ibm.ws.console.core.servlet.WSCUrlFilter</filter-class>
</filter>
<filter>
<filter-name>Trace_Tree_Cache_Init_Filter</filter-name>
<filter-class>com.ibm.ws.console.probdetermination.trace.tree.TraceTreeCacheInit</filter-class>
</filter>
<filter-mapping>
<filter-name>WSCUrlFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Trace_Tree_Cache_Init_Filter</filter-name>
<servlet-name>Trace Tree Servlet</servlet-name>
</filter-mapping><filter-mapping>
<filter-name>Agent</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.ibm.isclite.SessionListener</listener-class>
</listener>
<listener>
<listener-class>com.ibm.ws.console.appmanagement.SessionListener</listener-class>
</listener>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/config/struts-config.xml</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>SecureCleanup</servlet-name>
<servlet-class>com.ibm.ws.console.core.servlet.SecureCleanupServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>FederationServlet</servlet-name>
<servlet-class>com.ibm.ws.console.core.servlet.FederationServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>ProfileSelectionServlet</servlet-name>
<servlet-class>com.ibm.ws.console.core.servlet.ProfileSelectionServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>ConsoleCSS</servlet-name>
<jsp-file>secure/layouts/console_css.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>EventInitializer</servlet-name>
<servlet-class>com.ibm.ws.console.events.EventListenerServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>downloadFile</servlet-name>
<servlet-class>com.ibm.ws.console.core.servlet.DownloadFileServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>StatusServlet</servlet-name>
<servlet-class>com.ibm.ws.console.core.servlet.StatusServlet</servlet-class>
</servlet>
<servlet> -
Filter Records By Date in sharepoint
Hello,
I have one list which has lots of records, now i want to filter that list (Report you can say), for that I create one new page in which i inserted that list
My Requirement(Prob)
Whenever, i open that page it must show the records entered since last 10 days, i.e say
Today's Date is 9th February 2012 dan it should show records entered on or after
30th January 2012. I tried with the date filter webpart i set Current Date - 10 Days as the default value for my datefilter webpart and filter the list with that, but not able to get the records.
Please tell me where m doing the wrong or missing something, i will really appreciate for this.....
Sorry, for my poor english
Regards,
PrashantHello Vijay,
Finally i got the solution,
Yes u were correct i just used the filter option on "Created" and choose "Greater Than or Equal" option and Value as "Current Date"
than open that page in sharepoint designer when to the CAML Query
Before:
<Where>
<Geq>
<FieldRef Name="Created"/>
<Value Type="DateTime">
<Today />
</Value>
</Geq>
</Where>
After:
<Where>
<Geq>
<FieldRef Name="Created"/>
<Value Type="DateTime">
<Today
OffsetDays="-10"/>
</Value>
</Geq>
</Where>
and Bingo!!!!!!!!!! its works, Thanks a lot for the solution
Regards
Prashant -
I have the following query:
SELECT
obst.obst_id obstructionId
,oost.comment_clob CommentClob
,chp1.ptcar_no StartPtcar
,chp2.ptcar_no EndPtcar
,oost.track_code Track
,oost.start_date StartPeriod
,oost.end_date EndPeriod
,oost.doc_no RelaasId
,obst.status_code Status
FROM T1 obst
, T2 oost
, T3 chp1
, T3 chp2
where obst.oost_id = oost.oost_id
and oost.chp_id_start = chp1.chp_id
and oost.chp_id_end = chp2.chp_id
and obst.obs_stat = 2
and add_months(obst.mod_date,13) >= :ld_curr_date
and oost.start_date between :ld_from_date and :ld_to_date
and exists (select 1
from T4 obsv
, T5 veh
where obsv.veh_id = veh.veh_id
and (:ln_opr_id is null
OR veh.opr_id = :ln_opr_id)
and obsv.obst_id = obst.obst_id
and veh.ac_number between :ln_min_number and :ln_max_number
and obsv.start_date > obst.start_date
order by obst.obst_id;
Giving the following execution plan where a bloom filter has been used.
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | Reads |
| 0 | SELECT STATEMENT | | 1 | | 10 |00:02:13.09 | 128K| 94376 |
| 1 | SORT ORDER BY | | 1 | 8 | 10 |00:02:13.09 | 128K| 94376 |
| 2 | NESTED LOOPS | | 1 | | 10 |00:02:13.06 | 128K| 94376 |
| 3 | NESTED LOOPS | | 1 | 8 | 10 |00:02:13.06 | 128K| 94376 |
| 4 | NESTED LOOPS | | 1 | 8 | 10 |00:02:13.06 | 128K| 94376 |
|* 5 | HASH JOIN SEMI | | 1 | 8 | 10 |00:02:13.06 | 128K| 94376 |
| 6 | JOIN FILTER CREATE | :BF0000 | 1 | | 1469 |00:00:02.06 | 12430 | 76 |
| 7 | NESTED LOOPS | | 1 | | 1469 |00:00:00.17 | 12430 | 76 |
| 8 | NESTED LOOPS | | 1 | 307 | 5522 |00:00:00.11 | 10545 | 52 |
|* 9 | TABLE ACCESS BY INDEX ROWID| T2 | 1 | 316 | 5522 |00:00:00.07 | 3383 | 46 |
|* 10 | INDEX RANGE SCAN | T2_OOST_START_DATE_I | 1 | 1033 | 8543 |00:00:00.03 | 33 | 3 |
|* 11 | INDEX RANGE SCAN | T1_OBST_OOST_DK_I | 5522 | 1 | 5522 |00:00:00.08 | 7162 | 6 |
|* 12 | TABLE ACCESS BY INDEX ROWID | T1 | 5522 | 1 | 1469 |00:00:00.13 | 1885 | 24 |
| 13 | VIEW | VW_SQ_1 | 1 | 64027 | 1405 |00:00:07.82 | 115K| 94300 |
|* 14 | FILTER | | 1 | | 1405 |00:00:07.82 | 115K| 94300 |
| 15 | JOIN FILTER USE | :BF0000 | 1 | 64027 | 1405 |00:00:07.82 | 115K| 94300 |
| 16 | PARTITION REFERENCE ALL | | 1 | 64027 | 64027 |00:01:48.22 | 115K| 94300 |
|* 17 | HASH JOIN | | 52 | 64027 | 64027 |00:02:03.37 | 115K| 94300 |
| 18 | TABLE ACCESS FULL | T4 | 52 | 64027 | 64027 |00:00:00.34 | 1408 | 280 |
|* 19 | TABLE ACCESS FULL | T5 | 41 | 569K| 5555K|00:02:08.32 | 114K| 94020 |
| 20 | TABLE ACCESS BY INDEX ROWID | T3 | 10 | 1 | 10 |00:00:00.01 | 22 | 0 |
|* 21 | INDEX UNIQUE SCAN | T3_CHP_PK | 10 | 1 | 10 |00:00:00.01 | 12 | 0 |
|* 22 | INDEX UNIQUE SCAN | T3_CHP_PK | 10 | 1 | 10 |00:00:00.01 | 12 | 0 |
| 23 | TABLE ACCESS BY INDEX ROWID | T3 | 10 | 1 | 10 |00:00:00.01 | 10 | 0 |
Predicate Information (identified by operation id):
5 - access("ITEM_1"="OBST"."OBST_ID")
filter("ITEM_2">"OBST"."START_DATE")
9 - filter(("OOST"."CHP_ID_START" IS NOT NULL AND "OOST"."CHP_ID_END" IS NOT NULL))
10 - access("OOST"."START_DATE">=:LD_FROM_DATE AND "OOST"."START_DATE"<=:LD_TO_DATE)
11 - access("OBST"."OOST_ID"="OOST"."OOST_ID")
12 - filter(("OBST"."OBS_STAT"=2 AND ADD_MONTHS(INTERNAL_FUNCTION("OBST"."MOD_DATE"),13)>=:LD_CURR_DATE))
14 - filter((:LN_MIN_ac_number<=:ln_max_number AND TO_DATE(:LD_FROM_DATE)<=TO_DATE(:LD_TO_DATE)))
17 - access("OBSV"."VEH_ID"="VEH"."VEH_ID")
19 - filter(((:LN_OPR_ID IS NULL OR "VEH"."OPR_ID"=:LN_OPR_ID) AND "VEH"."ac_number">=:LN_MIN_ac_number AND
"VEH"."ac_number"<=:ln_max_number))
21 - access("OOST"."CHP_ID_START"="CHP1"."CHP_ID")
22 - access("OOST"."CHP_ID_END"="CHP2"."CHP_ID")
This query completes in a not acceptable response time of more than 2 minutes and this is why it has been handled to me for possible improvement.
As you might have already pointed it out from the above execution plan, the operation number 19 is the most time consuming operation (TABLE ACCESS FULL of T5). The query without the EXISTS part represents our data. This part of the query is very fast. It gives about 1500 rows. However, when we want to limit those 1500 records to only records satisfying the exists clause (10 records), the query starts not performing very well because of this full table scan on T5 (5,5 millions).
The ideal situation would have been to :
(a) first join table T5(alias veh) with the table T4(alias obs) using the join condition (predicate 17) limiting the number of record from T5 table
(b) and then filter from T5 table (predicate 19)
But in this case the CBO is starting by a costly full scan of the entire T5 table (5,5 millions of rows operation 19) before sending this enormous amount of data to the HASH JOIN operation 17 which finally throw away the majority of T5 rows not satisfying the join condition : access("OBSV"."VEH_ID"="VEH"."VEH_ID")
I have already verified that the table statistics and their join column statistics are up-to-date and are reflecting the reality. But failed to know how to let the CBO automatically doing what I want it to do i.e. Join first and then filter.
When I discussed with the client we agreed to re-factor a little bit this query so that it is now completing in few seconds.
The new plan is not using bloom filter and the veh table is accessed via its unique index on VEH_ID (18 - access("OBSV"."VEH_ID"="VEH"."VEH_ID")) before applying the filter operation. Exactly as I wanted it to be in the original query
Have you any idea on how to change this join method/order so that the full table scan is post poned? of course without refactoring the query
Do you think that bloom filter is the culprit here?
Thanks in advance
Mohamed Houri
PS : and veh.ac_number between :ln_min_number and :ln_max_number
These two imput parameters are beyound the known low and high value. But even when I used min and max value taken from the table (min = low_value from stats and max = high value from stat), the plan didn't changedJonathan,
I got the plan I was looking for.
It is not exactly the same as the execution plan that corresponds to the re-factored query but it is what I wanted to have.
SELECT /*+ gather_plan_statistics */
obst.obst_id obstructionId
,oost.comment_clob CommentClob
,chp1.ptcar_no StartPtcar
,chp2.ptcar_no EndPtcar
,oost.track_code Track
,oost.start_date StartPeriod
,oost.end_date EndPeriod
,oost.doc_no RelaasId
,obst.status_code Status
FROM T1 obst
, T2 oost
, T3 chp1
, T3 chp2
where obst.oost_id = oost.oost_id
and oost.chp_id_start = chp1.chp_id
and oost.chp_id_end = chp2.chp_id
and obst.obs_stat = 2 -- only reeel
and exists (select /*+ no_unnest push_subq */ 1
from T4 obsv
, T5 veh
where obsv.veh_id = veh.veh_id
and (null is null
OR veh.opr_id = null
and obsv.obst_id = obst.obst_id
and veh.ac_number between 1 and 99999
and obsv.start_date > obst.start_date
and oost.start_date between to_date ('20/11/2013','DD/MM/YYYY') and to_date ('27/11/2013','DD/MM/YYYY')
and add_months(obst.mod_date,13) >= sysdate
order by obst.obst_id
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time |
| 0 | SELECT STATEMENT | | 1 | | 6 |00:00:00.56 |
| 1 | SORT ORDER BY | | 1 | 254 | 6 |00:00:00.56 |
|* 2 | HASH JOIN | | 1 | 254 | 6 |00:00:00.11 |
| 3 | TABLE ACCESS FULL | T3 | 1 | 2849 | 2849 |00:00:00.01 |
|* 4 | HASH JOIN | | 1 | 254 | 6 |00:00:00.11 |
| 5 | TABLE ACCESS FULL | T3 | 1 | 2849 | 2849 |00:00:00.01 |
| 6 | NESTED LOOPS | | 1 | | 6 |00:00:00.10 |
| 7 | NESTED LOOPS | | 1 | 254 | 5012 |00:00:00.09 |
|* 8 | TABLE ACCESS BY INDEX ROWID | T2 | 1 | 262 | 5012 |00:00:00.06 |
|* 9 | INDEX RANGE SCAN | T2_OOST_START_DATE_I | 1 | 857 | 7722 |00:00:00.01 |
|* 10 | INDEX RANGE SCAN | T1_OBST_OOST_DK_I | 5012 | 1 | 5012 |00:00:00.03 |
|* 11 | TABLE ACCESS BY INDEX ROWID | T1 | 5012 | 1 | 6 |00:00:00.48 |
| 12 | NESTED LOOPS | | 1277 | | 6 |00:00:00.46 |
| 13 | NESTED LOOPS | | 1277 | 2 | 6 |00:00:00.46 |
| 14 | PARTITION REFERENCE ALL | | 1277 | 4 | 6 |00:00:00.46 |
|* 15 | TABLE ACCESS BY LOCAL INDEX ROWID| T4 | 66380 | 4 | 6 |00:00:00.43 |
|* 16 | INDEX RANGE SCAN | T4_OBSV_OBST_FK_I | 66380 | 86 | 6 |00:00:00.28 |
|* 17 | INDEX UNIQUE SCAN | T5_VEH_PK | 6 | 1 | 6 |00:00:00.01 |
|* 18 | TABLE ACCESS BY GLOBAL INDEX ROWID | T5 | 6 | 1 | 6 |00:00:00.01 |
Predicate Information (identified by operation id):
2 - access("OOST"."CHP_ID_END"="CHP2"."CHP_ID")
4 - access("OOST"."CHP_ID_START"="CHP1"."CHP_ID")
8 - filter(("OOST"."CHP_ID_START" IS NOT NULL AND "OOST"."CHP_ID_END" IS NOT NULL))
9 - access("OOST"."START_DATE">=TO_DATE(' 2013-11-20 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND "OOST"."START_DATE"<=TO_DATE(' 2013-11-27
00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
10 - access("OBST"."OOST_ID"="OOST"."OOST_ID")
11 - filter(("OBST"."OBS_STAT"=2 AND ADD_MONTHS(INTERNAL_FUNCTION("OBST"."MOD_DATE"),13)>=SYSDATE@! AND IS NOT NULL))
15 - filter("OBSV"."START_DATE">:B1)
16 - access("OBSV"."OBST_ID"=:B1)
17 - access("OBSV"."VEH_ID"="VEH"."VEH_ID")
18 - filter(("VEH"."ac_number">=1 AND "VEH"."ac_number"<=99999))
Spot how the predicate 17 and 18 are now in the position I wanted them to be i.e probe first the T5 unique index using the join condition and then filter the table T5
But, there is always a but, why am I obliged to hint?
Where did I got something wrong (statistics, optimizer parameter, etc...) so that the CBO did not opted for this execution plan without a hint?
Thanks
Mohamed Houri -
ALV: cannot filter multiple columns at a time
Hi,
I'm trying to fix a problem in a report that uses ALV grid: when I try to filter the grid content by choosing a multi-column criteria, I get prompted only to enter the first column selection criteria. That is, I multi-select 2 or more columns, right click, then Set Filter...; I get the selection only for the first selected column. I know this is a built-in feature of ALV grid, is there a parameter I'm missing when I build the grid?
Thanks a lot,
Dinu
Here are some code snippets:
FORM output_report.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = 'ZRRRMPROJSTAT'
is_layout = gs_layout
it_fieldcat = gt_fieldcat
it_sort = gt_sort
i_save = 'A'
it_events = gt_events
TABLES
t_outtab = i_project
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " output_report
FORM build_fieldcat.
DATA: s_fieldcat TYPE slis_fieldcat_alv.
DATA: l_col_count like s_fieldcat-col_pos.
l_col_count = 1.
CLEAR s_fieldcat.
s_fieldcat-col_pos = l_col_count.
l_col_count = l_col_count + 1.
s_fieldcat-tabname = i_project.
s_fieldcat-fieldname = 'PSPID'.
s_fieldcat-datatype = 'CHAR'.
s_fieldcat-outputlen = '10'.
s_fieldcat-seltext_l = 'Project Number'.
s_fieldcat-seltext_m = 'Project Number'.
s_fieldcat-seltext_s = 'Project Number'.
s_fieldcat-key = 'X'.
s_fieldcat-fix_column = 'X'.
s_fieldcat-just = 'C'.
s_fieldcat-no_zero = 'X'.
APPEND s_fieldcat TO gt_fieldcat.
and so on....
ENDFORM
FORM sort_layout.
DATA: ls_sort TYPE slis_sortinfo_alv.
REFRESH gt_sort.
CLEAR ls_sort.
ls_sort-spos = '1'.
ls_sort-tabname = 'i_project'.
ls_sort-fieldname = 'PSPID'.
APPEND ls_sort TO gt_sort.
CLEAR ls_sort.
ls_sort-spos = '2'.
ls_sort-tabname = 'i_project'.
ls_sort-fieldname = 'POSID'.
APPEND ls_sort TO gt_sort.
ENDFORM. " sort_layout
FORM build_layout.
CLEAR gs_layout.
gs_layout-totals_before_items = 'X'.
gs_layout-zebra = 'X'.
gs_layout-numc_sum = 'X'.
gs_layout-get_selinfos = 'X'.
gs_layout-box_tabname = 'X'.
gs_layout-info_fieldname = 'COLOR'.
ENDFORM. "Hi,
I think there is no prob with ALV, U follow steps as:
click on alv Set filter button.
then transfer column names to filter field list,
on same screen filter button is there click it,
now it will ask for both filter criteria.
I am sure it will do, Award if it helps
Jogdand M B -
Hello,
I am trying to use a lowpass filter for my application but getting the error "SubVI filter not executable. Undefined error".I tried working with the solutions at this post
http://forums.ni.com/t5/LabVIEW/SubVI-filter-not-executable-Undefined-error/m-p/1996701#M657751 and results with
1. Create a blank vi, put a VI filter in the block diagram (this should not be functional as it is not wired), copy it and paste it in my other project. I believe if the filter is the first vi of a blank project, it is funcitonal and then you may copy it wherever you need to.
Result:
2.Tried to open the filter panel of the Filter but showing the same error as shown inthe below image
Don't why the solutions worked for others are not working.Can someone suggest a solution for this.
thanks in advance.Hi PatanGova,
Very strange error. Actually, there are no required inputs on this express VI, so it should be able to run even without wires. It is not correct as you said: "this should not be functional as it is not wired". Nothing will happen, true, but the run arrow should not be broken.
For some reason, the VI with the Filter express VI fails to compile. I tried it on my computer (LV 2013) and get no error when I add it to a new VI. As was suggested in the linked forum thread, you need to open the front panel of the Filter VI and run it to see the explicit error.
If you do, do you also get the error:
"This VI claims to be part of a library that does not include the VI. The VI might have been deleted from the library. Add the VI to the library again or select File - Disconnect from the library."?
If you do, it seems that you may have a project library somewhere that has taken ownership of the express VI. The ownership prevents you from running or editing the express VI. To free the VI, you need to do one of two things. Either, you need to load the library into memory, or you need to disconnect the VI from the library. Either way, you need to find the project library that has taken the ownership of the VI. As soon as it is released, it should run for you. You release it by selecting File»Disconnect from Library on the VI.
The workaround described in your link (and also here: http://forums.ni.com/t5/LabVIEW/compatibility-problem-labview-2009-2010-2011-quot-This-VI-claims/td-... tells that you can make a copy of the VI and thereby create another instance that is free. This solution may work for you as well, but if not, you may not have created the copy properly. Maybe your copy of the VI also became part of some project library that took ownership. In either way, you should rather find the project library to release the VI before trying the workaround to copy it.
If project library ownership is not the problem, maybe the problem is connected to LV 2011, as most forum posters report that it only happens here. -
Ecg baseline wandering[​need quick expert help]
Hello everyone!
I'm new user here, and I have an urgent problem considering my faculty project.
I have looked at previous topics on this matter, and also I've checked the tutorial here
http://zone.ni.com/devzone/cda/tut/p/id/6349
but I didnt find the exact thing I need.
So here is the thingd:
I have baseline wandering, but how can I fix it without using additional
Digital Filter Design Toolkit (DFDT). I have access only to labview 8.5 at laboratory at my faculty
and I dont have DFDT there.
I have attached what I have done so far, and it would mean a lot if someone could help me
by explaining me how to create/or create for me the filter for wandering.
I would upload the ecg txt file that I use but it's 35mb.
Thanks in advance people!
Attachments:
Semestralni.vi 63 KBI agree with Steve. Also remember that if your goal only is to extract heart rate you will only be interested in the QRS complex. The rest of the ECG complex that have lower frequency content may be shaved away with filtering. In your signal you have a large bump just before sample 8000. This is caused by electrode movement. Securing the electrodes is important. But your biggest problem is that you do not use the "Peak Detector.vi" correct.
Here is some useful tips for the Labview beginner (we have all been there some time)
1)Then starting a new Labview session enable context help (Ctrl+h) Do not be afraid to use the detailed help option
2)Then stuck, go to help in the toolbar then select find examples
Ps. I also noticed that your Labview programming style is somewhat mixed-up. It is hard to follow the data flow.
Besides which, my opinion is that Express VIs Carthage must be destroyed deleted
(Sorry no Labview "brag list" so far) -
Hello,
I am recieving a lot of baseline drift in my ECG signal and was wondering how I can get rid of it? I saw examples at NI .com but they used the digital filter design toolkit and the advanced sgnal processing tollkit. I have neither one of these and since I am a student and this is my senior project I have no means to get these toolkits. I tried using a high pass filter but this did not work.\
RayRay,
When you say that something did not work, you are not giving much information for us to use to try to help you. Did the filter not work or did it not remove the drift?
How big is the drift, compared to the desired signal? How fast does it drift? How long are your sample sets? What are you doing with the ECG data? Looking at heart rate or analyzing a single-beat waveform for morphological changes? I think you can see that different end goals might require different approaches to baseline compensation.
If the drift is always fairly slow, you might be able to take small segments and subtract the mean of each segment. This may result in some offset or shift at the segment boundaries, but it is very simple and can easily be implemented without requiring a special toolkit.
Another approach is to low pass filter the ECG signal to extract an estimate of the baseline which can then be subtracted. Remember that all filters have a transient response and many will have a phase shift between the input and output.
Lynn -
Query in table view -filter.
hi,
i have one probs. for using the filter in the tableview.
These r the following code i used.
<%
data: columnDefinitions type TABLEVIEWCONTROLTAB,
wa type TABLEVIEWCONTROL.
data filters type tableviewFilterTab.
field-symbols: <filter> like line of filters,
<wa> type IHTTPNVP2.
append initial line to filters assigning <filter>.
<filter>-columnName = 'connid'.
i want to fetch all connid value from DB in the dropdownlistbox ,insteed of giving manually.here manually i am giving the value to the dropdownlistbox.
i tryed in some ways,but still i am not getting.
can any one help me to sole the probs.
append initial line to <filter>-dropdownlistbox table assigning <wa>.
<wa>-name = '*'.
<wa>-value = '*'.
append initial line to <filter>-dropdownlistbox_table assigning <wa>.
<wa>-name = '0820'.
<wa>-value = '0820'.
%>
<htmlb:tableView id = "tv2"
headerText = "Books that match your query"
headerVisible = "true"
footerVisible = "false"
design = "ALTERNATING"
visibleRowCount = "30"
filter = "server"
sort = "server"
columnFilters = "<%=filters%>"
onRowSelection = "MyEventRowSelection"
selectionMode = "SINGLESELECT"
table = "<%= itab %>" >
with regards,
ravi.Hi Ravi,
Go through the weblog,
/people/sap.user72/blog/2005/05/05/bsphowto-filter-using-dropdown-in-tableview
Regards,
Azaz Ali. -
Hi 2 all i am new to BI .i got a prob while iam loading from r/3 to dso. actualLY in r/3 there is 9000 rec i put load to psa .THEN 10000 rec came to psa from therE i put load to dso .There I GOT ONLY 75OO rec this is my prob can any one hepltome its vey urgent
thnks
satishHi Satish,
The problem you are saying may not be a problem actaully
Reasons of your observation:
1.Firstly ,where did u check the no. of records??Is the loading delta..then why should no.of records be the 9000???(only new/changed records come in delta)
2.Now...your observation can happen in three cases:
a.Your functionmodule which is used in extraction may be having some filter criteria
b.Your Infopackage has some selection condition
c.Your Infopackage is loading delta request
d.Now your DTP which is loading to target is having some filter
e.Your transformation/update rules etc having routine to filter records..
It is never mandatory to have transferred records same as added records.In some cases the transferred records can be greater than added records..(filter)
or in some cases transferred records can be less than added records(appending data to result package)
Regards,
rocks -
Savitzky filter: problem writing to file
Hi,
I have a very weird problem. I m using a Savitzky Golay filter to smooth some data and I can see the correct filtered data on the graph on the front panel. Now, I want to write this filtered data to a file. So I wired the output of the SG filter to a spreadsheet file. On replotting the file, I notice that the graph that I obtain is identical to the input that I gave to the filter. I have attached some screenshots of the front panels and the replotted graph.
Figure one: Is the input to the SG filter
Figure two: Is the output of the SG filter.
Figure three: Is the waveform that I obtained from replotting the output that I wrote to a file.
Figure four: Is the SG filter and write to file VI screenshot.
Can someone please help me out. Its driving me crazy.
Thanks and regards.
Attachments:
sgfilter_writetofile.doc 314 KBYou index the output-array of the filter VI before you save it to file. So on the frontpanel you see the whole waveform, but you save only the first value to the file. Another evidendence for this is the messed up x-Axis (time) in the data loaded from your file. The data you see in the file is neither the data before, nor the data after the filter function. You see only the first value of each measurement. YOu have to put a for-loop arround your save to spreadsheet, or better would be to not index the array at all and write the whole array to file. You can use probes to see what I mean.
Hope this helps!
Andre
Maybe you are looking for
-
Photoshop CS2 on Windows 7 - unable to boot up after installing
Hi everyone, I really hope anyone can help me with this!! Ok, I've always used Imageready CS2 to open avi files to edit then save as animation GIF without affecting quality (which part of PS CS2 that I did pay for) on my old laptop with Windows XP in
-
Iweb : site en 2 parties ?
j'ai créé un site avec 2 parties une sans mot de passe et une avec mot de passe. Comment faire pour avoir accèse à la partie avec mot de passe ? Est-ce possible ?
-
Error in proxy configuration for a WebService
This is my first attempt at working with a WebService in Flash. The services, which are on a local machine work fine when I call them directly, i.e. with useProxy="false". However, when I attempt to call them through BlazeDS, setting useProxy="true",
-
I'm running a Java applet. I need to pop up some kind of message dialog to the user that lets them know that the program is running (while it appears to be doing nothing). However, I don't want this to stop the subsequent lines of the program executi
-
Substitution not allowing using table PRTE
Dear All, I want to copy the WBS scheduled dates in two user defined date fields in WBS element. For this purpose, I created a substitution where I added the table fields of PRTE table( the scheduled dates for WBS are stored here) using SE16N in tabl