Dim ListArray(4) As String
Dim ComboArray(5) As String
Dim DataFileName As String
Dim DataDirectory As String
Dim SaveDirectory As String
Dim gain As New Spreadsheet
Dim phase As New Spreadsheet
Dim coherence As New Spreadsheet
Dim FileNumber As Integer
Dim strFileNames(1 To 9) As String
Dim strPrefix, strSuffix As String
Dim NumberOfRows As Integer
Dim NumberOfColumns As Integer
Sub Main
NumberOfRows=9
NumberOfColumns=10
DataDirectory = "C:\Documents and Settings\Julie\My Documents\CarFol_Vel_Analysis\car_follow_processing\"
SaveDirectory = "C:\Documents and Settings\Julie\My Documents\CarFol_Vel_Analysis\car_follow_processing\"
strPrefix="CarFollowV2_Follow_Sub"
strSuffix="_1"
strFileNames(1) = "JL_"
strFileNames(2) = "ME_"
gain.SetSize(NumberOfRows+1, 6)
phase.SetSize(NumberOfRows+1, 6)
coherence.SetSize(NumberOfRows+1, 6)
gain.Visible =True
phase.Visible =True
coherence.Visible =True
For i = 1 To NumberOfRows
For j=1 To 5
gain.Value (i+1,j+1)=0.0
phase.Value (i+1,j+1)=0.0
coherence.Value (i+1,j+1)=0.0
Next j
FileNumber = i
Fourier
Next i
gain.Value (1,1)="SubjectName"
phase.Value (1,1)="SubjectName"
coherence.Value (1,1)="SubjectName"
For i=1 To 3
gain.Value (1,1+i)="Freq"+Right(Str(i),1)
phase.Value (1,1+i)="Freq"+Right(Str(i),1)
coherence.Value (1,1+i)="Freq"+Right(Str(i),1)
Next i
gain.SaveAs (SaveDirectory + "SumSin_gain_"+ ".sta")
phase.SaveAs (SaveDirectory + "SumSin_phase_" + ".sta")
coherence.SaveAs (SaveDirectory + "SumSin_coherence_" + ".sta")
Finish:
End Sub
Sub Fourier
Dim sum As Double
sum=0.0
Dim filename As String
For j=1 To 2
filename = DataDirectory + strPrefix+strFileNames(FileNumber)+Right(Str(j),1)+strSuffix + ".txt"
Dim S1 As Spreadsheet
Set S1 = Spreadsheets.Open (filename)
S1.Visible = True
S1.SaveAs (DataDirectory + strFileNames(FileNumber)+Right(Str(j),1) + ".sta")
For i=1 To NumberOfColumns/2
'i=2
Dim newanalysis3 As Analysis
Set newanalysis3 = Analysis (scTimeSeries, S1)
With newanalysis3.Dialog
.Variables = "1-10"
.LockTimeSeriesVariable = "Locked Locked Locked Locked Locked Locked Locked Locked Locked Locked"
.SeriesShortName = "Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9 Var10"
.SeriesLongName = "" + vbLf + _
"" + vbLf + _
"" + vbLf + _
"" + vbLf + _
"" + vbLf + _
"" + vbLf + _
"" + vbLf + _
""+ vbLf + _
"" + vbLf + _
""
.FocusTimeSeriesVariable = 3
.NumberOfBackupsPerVariable = 3
.InterpolateMDFromAdjacentPoints = True
.NumberOfAdjacentPointsForMeanMDReplacement = 1
.NumberOfAdjacentPointsMedianMDReplacement = 2
End With
newanalysis3.Dialog.SpectralFourierAnalysis
'This little routine below creates a string with the right name for the Dependent Variable in the Fourier analysis.
'I'm using the Right function below to remove a space that was occuring between "Var" and the number when I left it out.
Dim DependentVar As String
DependentVar = Str(2*i-1) + " Var"
DependentVar = DependentVar + Right(Str(2*i-1),1)
With newanalysis3.Dialog
.LockTimeSeriesVariable = "Locked Locked Locked Locked Locked Locked Locked Locked Locked Locked"
.SeriesShortName = "VAR1 VAR2 VAR3 VAR4 VAR5 VAR6 VAR7 VAR8 VAR9 VAR10"
.SeriesLongName = "" + vbLf + _
"" + vbLf + _
"" + vbLf + _
"" + vbLf + _
"" + vbLf + _
"" + vbLf + _
"" + vbLf + _
"" + vbLf + _
"" + vbLf + _
""
.FocusTimeSeriesVariable = (2*i)
.NumberOfBackupsPerVariable = 3
.DependentVariable = DependentVar
.Taper = False
.SubtractMeanFromInputSeries = True
.DetrendInputSeries = True
.PadLengthToAPowerOf2 = True
.DisplayPlotSubsetOfCasesOnly = True
.DisplayPlotSubsetFrom = 1 'should change according to specific raw data file, the same as the following line
.DisplayPlotSubsetTo = 3600
.ScaleXAxisInPlotsManually = False
.LabelDataPointsWithCaseNumbers = True
.PLevelForHighlighting = 0.050000
.WhiteNoiseStandardErrors = True
.NumberOfLags = 15
End With
newanalysis3.Dialog.TwoSeriesFourierAnalysis
With newanalysis3.Dialog
.HighlightValuesInSpreadsheet = True
.HighlightValuesGreaterThan = 1.000000
.NLargestValues = 10
.DisplayLargestCrossPeriodogramReal = True
.DataWindowForDensityEstimatesHamming = True
.UserDefinedDataWindow = "0.0357143 0.241071 0.446429 0.241071 0.0357143 "
.WidthOfDataWindow = 5
.AppendToWorkAreaFrequencyValues = False
.AppendToWorkAreaPeriodValues = False
.AppendToWorkAreaCosineCoefficients = False
.AppendToWorkAreaSineCoefficients = False
.AppendToWorkAreaPeriodogram = False
.AppendToWorkAreaSpectralDensity = False
.AppendToWorkAreaCrossPeriodogram = False
.AppendToWorkAreaCospectralDensity = False
.AppendToWorkAreaQuadratureSpectrum = False
.AppendToWorkAreaCrossAmplitude = False
.AppendToWorkAreaCoherency = False
.AppendToWorkAreaGain = False
.AppendToWorkAreaPhaseSpectrum = False
.ExamineSubsetOfPeriodogram = False
.SelectedResultCosineCoeffs = False
.SelectedResultSineCoeffs = False
.SelectedResultPeriodogram = False
.SelectedResultSpectralDensity = False
.SelectedResultCrossPeriodogram = Fals
.SelectedResultCospectralDensity = True
.SelectedResultQuadratureSpectrum = True
.SelectedResultCrossAmplitude = False
.SelectedResultCoherency = True
.SelectedResultGain = False
.SelectedResultPhaseSpectrum = False
.PlotByFrequency = True
End With
Set r=newanalysis3.RouteOutput(newanalysis3.Dialog.Summary)
If (r.HasWorkbook=True) Then
Dim w As Workbook
Set w=r.Workbook
Dim wi As WorkbookItem
Set wi=w.Root.Child
While (wi.Type<>scWorkbookItemTypeSpreadsheet)
Set wi=wi.Child
Wend
Dim s As Spreadsheet
Set s=wi.Extract(scWorkbookExtractCopy)
s.Visible=True
End If
'newanalysis3.RouteOutput(newanalysis3.Dialog.Summary).Visible = True
gain.Value(FileNumber+1,2)=s.Value(3,18)/10+gain.Value(FileNumber+1,2)
gain.Value(FileNumber+1,3)=s.Value(6,18)/10+gain.Value(FileNumber+1,3)
gain.Value(FileNumber+1,4)=s.Value(13,18)/10+gain.Value(FileNumber+1,4)
gain.Visible = True
phase.Value(FileNumber+1,2)=s.Value(3,19)/10+phase.Value(FileNumber+1,2)
phase.Value(FileNumber+1,3)=s.Value(6,19)/10+phase.Value(FileNumber+1,3)
phase.Value(FileNumber+1,4)=s.Value(13,19)/10+phase.Value(FileNumber+1,4)
phase.Visible = True
coherence.Value(FileNumber+1,2)=s.Value(3,16)/10+coherence.Value(FileNumber+1,2)
coherence.Value(FileNumber+1,3)=s.Value(6,16)/10+coherence.Value(FileNumber+1,3)
coherence.Value(FileNumber+1,4)=s.Value(13,16)/10+coherence.Value(FileNumber+1,4)
coherence.Visible = True
newanalysis3.Close
newanalysis3.Close
Set newanalysis3 = Nothing
s.Close
w.Close
Next i
S1.Close
Set S1 = Nothing
Next j
gain.Value(FileNumber+1,1)=strFileNames(FileNumber)
phase.Value(FileNumber+1,1)=strFileNames(FileNumber)
coherence.Value(FileNumber+1,1)=strFileNames(FileNumber)
End Sub