40m QIL Cryo_Lab CTN SUS_Lab TCS_Lab OMC_Lab CRIME_Lab FEA ENG_Labs OptContFac Mariner WBEEShop
  40m Log  Not logged in ELOG logo
Message ID: 522     Entry time: Fri Jun 6 11:19:13 2008
Author: Caryn 
Type: Summary 
Category: PEM 
Subject: Filtering MC_L and MC_F with PEM:ACC and microphone 
Tried to filter MC_L and MC_F with acc/seis data and microphone data using wiener filter (levinson)

-Used get_mic_data.m and miso_filter_lev.m to make SISO filter for 2 minutes of IOO-MC_F data. Used PEM-AS_MIC signal as noise input data. Filters calculated at initial time were applied to later data in 1 hour intervals.
-microphone filter did not seem to filter MC_F very well in high frequency range using this filtering procedure.
-residual is larger than est (see MC_F pdf)
-Used do_all_time_lev.m to make graph of max(rms(residual)) to N(order) for different times.(note for each N, filter was calculated for initial time and then applied to data at other times).
-relation of max(rms(residual)) to N(order) is time sensitive (note-on graph, time interval is 1hour) (see MC_F pdf)
-Presumably, max(rms(residual)) should decrease as N increases and increase as time increases since the filter probably becomes worse with time. I think the reason this isn't always true in this case is that the max(rms(residual)) corresponds to a peak (possibly a 60Hz multiple) and the wiener filter isn't filtering out that peak very well.


-Used get_z_data.m and miso_filter_lev.m to make MISO filter for 2 minutes of IOO-MC_L used the following signals as noise input data
PEM-ACC_MC1_X
PEM-ACC_MC2_X
PEM-ACC_MC1_Y
PEM-ACC_MC2_Y
PEM-ACC_MC1_Z
PEM-ACC_MC2_Z
PEM-SEIS_MC1_Y
-Filter was applied to later data in 2hour intervals.
-Used do_all_time_lev.m to make graph of max(rms(residual)) to N(order) for different times.(note for each N, filter was calculated for initial time and then applied to data at other times).
-acc/seis filter seemed to filter MC_L OK for 128,256,512Hz srates. 64 Hz wasn't ok for certain N's after a period of time.
-residual is smaller than est for srates not 64Hz (see MC_L pdf)
-residual is larger than est for 64Hz at N=1448 for later times (see MC_L pdf)
-relation of max(rms(residual)) to N is not as time sensitive for higher sample rates (note-on graph, time interval is 2hours) (see MC_L pdf). Perhaps the levinson 64Hz sample rate filter doesn't do as well as time passes for these signals. When the filter didn't do well, the max(rms(residual)) seemed to increase with N.
-For 512Hz sample rate filter the max(rms(residual)) decreased with time. If the max(rms(residual)) were an indication of filter performance, it would mean that the 512Hz filter calculated at the initial time was performing better later as hours passed by! Perhaps max(rms(residual)) isn't always great at indicating filter performance.

Programming notes
-I had to modify values in do_all_time_lev.m to get the program to loop over the srates,N's,times I wanted
-do_all_time_lev.m is not as clean as do_all_lev.m
-for making the plots do_all_lev.m (which isn't really a procedure and is messy) has some examples of how to plot things from do_all_time_lev.m.
Attachment 1: MC_F.pdf  42 kB  | Show | Hide all | Show all
Attachment 2: MC_L.pdf  47 kB  | Show | Hide all | Show all
Attachment 3: miso_filter_lev.m  3 kB  Uploaded Tue Jun 10 11:08:52 2008  | Show | Hide all | Show all
Attachment 4: get_mic_data.m  1 kB  Uploaded Tue Jun 10 11:09:19 2008  | Hide | Hide all | Show all
function[z,t0,duration]=get_mic_data(t,d_t,d)
%get_mic_data gets data for'C1:IOO-MC_F', 'C1:PEM-AS_MIC,
% Example:  z = get_mic_data('now',120,60)
%  start time is 't- d_t' so  d_t should be given in seconds. t should be given
%  as a number like 893714452. d is duration in seconds. get_mic_data saves
%  data to a file in current directory named 'temp_mic'. You will be asked to
%  save file as 'mic_(start_time)_(duration)'.

duration = d;

... 32 more lines ...
Attachment 5: do_all_time_lev.m  6 kB  Uploaded Tue Jun 10 11:57:34 2008  | Hide | Hide all | Show all
function[r] = do_all_time_lev(n,t0,int,duration,N,srate,rat,order,time,MC_L,MC_F,sample_rate)
%do_all_time explores how filter performance changes with time, sample rate,
%and order of filter. Outputs data,noise estimate, structure of max
%rms error and other info. It uses get_data, miso_filter_lev, and miso_filter_int and retrives
%MC_Ldata or MC_Fdata for multiple times, calculates a miso_filter for initial-time data
%file, applies filter to the other data files, and keeps track of the...
%max(rms(residual)) for each filter. n+1 is number of data files. int is time interval between
%data files, t0 is start time, duration is duration of each data file, srate
%is the sample rate for which filter is calculated, n_N is number of orders
%of the filter you want the program to calculate,int_N is interval by which N
... 215 more lines ...
Attachment 6: do_all_lev.m  7 kB  Uploaded Tue Jun 10 12:12:46 2008  | Hide | Hide all | Show all
function[r] = do_all_lev(n,t0,int,duration,n_N,int_N,n_srate,int_srate,rat,MC_L,MC_F)
%do_all_lev explores how filter performance changes with time, sample rate,
%and order of filter. Outputs data,noise estimate, structure of max
%rms error and other info. It uses get_data, miso_filter_lev, and miso_filter_int and retrives
%MC_Ldata or MC_Fdata for multiple times, calculates a miso_filter for initial-time data
%file, applies filter to the other data files, and graphs the rms of the cost
%function vs time. n+1 is number of data files. int is time interval between
%data files, t0 is start time, duration is duration of each data file, srate
%is the sample rate for which filter is calculated, n_N is number of orders
%of the filter you want the program to calculate,int_N is interval by which N
... 283 more lines ...
Attachment 7: do_all_plot.m  8 kB  Uploaded Tue Jun 10 12:13:03 2008  | Hide | Hide all | Show all
function[r] = do_all_plot(r,x,v)
 %do_all_plot plots variables contained in r(structure from
 %do_all_time_lev).Plots error(r.B.y) vs x. x can be
 %'s'(srate),'N'(order),'t'(time),'p'(impulse response). v can be 's','N','t'. 
 %example: do_all_plot(r,'s','t') makes a plot of error vs srate for
 %different times.

kk=1

err_N_srate=0
... 388 more lines ...
Attachment 8: miso_filter_int.m  3 kB  Uploaded Tue Jun 10 12:17:07 2008  | Hide | Hide all | Show all
function [s] = miso_filter_int(s,y)
%miso_filter_int inputs a filter and a structure array of data sets y, applies filter to data, and
%outputs a structure with fields: ppos(signal frequ spectrum),perr(cost
%function frequ spectrum),pest(signal estimate frequency
%spectrum),f(frequency),target(signal),est_darm(noise estimate),t(time).
%data file for which filter has been calculated is s (obtained using miso_filter). 
%y consists of data structures which will be filtered using
%filter from s. Then the power spectrum of the difference between signal and filtered-data is
%graphed for all the data files of y for comparison too see how well filter performs
%over time. Note if you want to create a y, take z1,z2,z3,etc. structures
... 120 more lines ...
ELOG V3.1.3-