creating matrix from for loop with system command output
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi All,
I would greatly appreciate some help on this.
I am trying to do the following.
Within a for loop, run 2 system commands and have the ouputs from those two commands make up all three elements of one row of a matrix for each iteration of the loop. I would then like to print the entire matrix to an excel file.
I tried this:
for i=1:3,
command1 = ['fslmeants -i image1 -m example_' num2str(i) '.nii.gz' ]
C(i,1) = evalc('system([command1])')
command2 = ['fslstats example_' num2str(i) ' -V']
C(i,2:3) = evalc('system ([command2])')
end
I received the following error message:
??? Assignment has more non-singleton rhs dimensions than non-singleton subscripts
Error in ==> name_of_script at 8 C(i,1) = evalc('system ([command1])')
I then tried this
for i=1:3,
command1 = ['fslmeants -i image1 -m example_' num2str(i) '.nii.gz' ]
A = evalc('system([command1])')
command2 = ['fslstats example_' num2str(i) ' -V']
B = evalc('system ([command2)')
end
the output for system ([command1]) when I don't try to assign a matrix element to it is
A =
0.302714 ans =
0
the output for system ([command2]) when I don't try to assign matrix elements to it is
B =
1413 19506.814453
ans =
0
If I then type B(1,2) I get
ans =
4
which gives me the second digit of the first number in B, not the second number (19506.814453) as I wanted.
I then checked if B was a character array as follows:
ischar B
ans =
1
So I guess if I can find a way for matlab to recognise the output of system([command1]) and system ([command2]) as 3 elements of the same row for each iteration of the for loop I'd be sorted.
So ideally, the first row of the Matrix C would be
C(1,:) = 0.302714 1413 19506.814453
and an extra row would be added with each iteration of the for loop.
Can anyone enlighten a lost soul?
All help much appreciated,
Best wishes,
Sean
0 comentarios
Respuestas (1)
Walter Roberson
el 7 de Feb. de 2012
B = evalc('system([command2])');
B = regexp(B,' +','split');
B{2} will now be the second column.
0 comentarios
Ver también
Categorías
Más información sobre Multidimensional Arrays en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!