Using Loops in Directories
Hello Forum,
I have sorted my calculated waves and added them into 54 folders each called NearbyR_xy and are placed in folder named "tests" (as a result of previous For Loop). Each NearbyR_xy folder contains two waves NearbyR_x and NearbyR_y. My goal is to do some more calculation on each waves within NearbyR_xy folder. In this piece of snippet I use "while" and "for" loops.
When I execute my code, the operation is done only on last folder NearbyR54xy, the other folders contain no waves and have duplicates of parent empty folder.
The Error I'm getting is: " While ex
Also as you see in code rPxWave1, rPxWave2 and Rwaves1 supposed to give waves with names rr..xToAll, rr..yToAll and RR respectively. I don't know why those waves are not created.
I think it has to do with indexing and path,
Thanks for your help.
killwaves /A/Z
//this part moves each waves to corresponding folder
newdatafolder /o root:tryFolders:rec1:tests
DFREF tests = GetDataFolderDFR()
string WaveNear = "NearbyR"+num2str(b)+"xy"
NewDataFolder root:tryFolders:rec1:tests:$(WaveNear)
SetDataFolder root:tryFolders:rec1:tests:$(WaveNear)
MoveWave root:tryFolders:rec1:$recon_col1, root:tryFolders:rec1:tests:$(WaveNear):
MoveWave root:tryFolders:rec1:$recon_col2, root:tryFolders:rec1:tests:$(WaveNear):
// This starts while loop operation and for loop within it
Variable numDataFolders = CountObjectsDFR(tests, 4)
variable a
DFREF tests = GetDataFolderDFR()
SetDataFolder root:tryFolders:rec1:tests:$(WaveNear):
do
For (a=0; a < numpnts($recon_col1); a+=1)
wave RC1=$recon_col1
wave RC2=$recon_col2
wave waveNx1,waveNy1
string wNameX1 = "p"+num2str(a)+"x"
duplicate/o root:tryFolders:rec1:tests:$(WaveNear):$recon_col1, root:tryFolders:rec1:tests:$(WaveNear):$wNameX1
wave waveNx1 =$wnamex1
WAVENx1= RC1[a]
string wNameY1 = "p"+num2str(a)+"y"
duplicate/o root:tryFolders:rec1:tests:$(WaveNear):$recon_col2, root:tryFolders:rec1:tests:$(WaveNear):$wNameY1
wave waveNy1 = $wnamey1
WAVENy1= RC1[a]
string rPx1 = "rr"+num2str(a)+"xToAll"
string rPy1 = "rr"+num2str(a)+"yToAll"
string Ar1 = "RR"+num2str(a)
duplicate/o root:tryFolders:rec1:tests:$(WaveNear):recon_col1, root:tryFolders:rec1:tests:$(WaveNear):$rPx1
duplicate/o root:tryFolders:rec1:tests:$(WaveNear):recon_col1, root:tryFolders:rec1:tests:$(WaveNear):$rPy1
duplicate/o root:tryFolders:rec1:tests:$(WaveNear):recon_col1, root:tryFolders:rec1:tests:$(WaveNear):$Ar1
wave rPxWave1=root:tryFolders:rec1:tests:$(WaveNear):$rPx1
wave rPyWave1=root:tryFolders:rec1:tests:$(WaveNear):$rPy1
wave Rwaves1=root:tryFolders:rec1:tests:$(WaveNear):$Ar1
rPxWave1=(RC1-WAVENx1)^2
rPyWave1=(RC2-WAVENy1)^2
Rwaves1 = sqrt(rPyWave1+rPxWave1)
EndFor
numdatafolders+=1
While ( numdatafolders < CountObjectsDFR(tests,4) )
END
It is quite hard to follow, but two things spring to mind:
1. Try running your code with the debugger and step through each line to check that it is doing what you expect.
2. In your code snippet above you have the line:
DFREF tests = GetDataFolderDFR()
twice - once for this data folder: root:tryFolders:rec1:tests, and once for this data folder: root:tryFolders:rec1:tests:$(WaveNear). Is this really what you intended?
Good luck.
September 10, 2019 at 10:55 pm - Permalink