Need help on matlab table

1 visualización (últimos 30 días)
Tanu Shree
Tanu Shree el 2 de Oct. de 2020
Respondida: per isakson el 3 de Oct. de 2020
I have a text file with object name like 'ABC_01.REST.BKP.Blr.RR.nii' and classifier. I want to loop through each object name based on the classifier but dot in file name is creating a problem, Any idea how to handle this?
ABV_0016.REST.blr6.dtAROMA_MNI.nii Controlled
ABV_0017.REST.blr6.dtAROMA_MNI.nii Syndrome 1
ABV_0019.REST.blr6.dtAROMA_MNI.nii Syndrome 2
ABV_0022.REST.blr6.dtAROMA_MNI.nii Syndrome 2
ABV_0030.REST.blr6.dtAROMA_MNI.nii Controlled
  3 comentarios
Tanu Shree
Tanu Shree el 2 de Oct. de 2020
My input will be classifier name like in above mentioned case Let's say If I pass Controlled it should give me two file name ABV_0016.REST.blr6.dtAROMA_MNI.nii and ABV_0030.REST.blr6.dtAROMA_MNI.nii.
Rik
Rik el 2 de Oct. de 2020
You misunderstood me. The text you posted is not valid Matlab syntax, so what is your exact data?

Iniciar sesión para comentar.

Respuesta aceptada

per isakson
per isakson el 3 de Oct. de 2020
Assumption: You have a text file that contains exactly the five lines of text formatted as code in your question.
Run the function cssm as in this example
>> object_names = cssm( 'd:\m\cssm\cssm.txt', 'Controlled' )
object_names =
2×1 cell array
{'ABV_0016.REST.blr6.dtAROMA_MNI.nii'}
{'ABV_0030.REST.blr6.dtAROMA_MNI.nii'}
>>
>> object_names = cssm( 'd:\m\cssm\cssm.txt', 'Syndrome 2' )
object_names =
2×1 cell array
{'ABV_0019.REST.blr6.dtAROMA_MNI.nii'}
{'ABV_0022.REST.blr6.dtAROMA_MNI.nii'}
>>
where
function object_names = cssm( ffs, classifier )
fid = fopen( ffs, 'rt' );
cac = textscan( fid, '%s%[^\n]', 'CollectOutput',true );
[~] = fclose( fid );
cac = strtrim( cac{1} );
is_selected = strcmp( cac(:,2), classifier );
object_names = cac( is_selected, 1 );
end
Comments:
  • It's possible to use a loop, but I see no reason to do that.
  • How does the dot in the file name create a problem?
  • The space in some classifier values requires a special solution. In the function, cssm, I read the first "word" (i.e. the object name) and then the rest of the row to the second column.
  • There are other solutions, e.g. using readtable()

Más respuestas (0)

Categorías

Más información sobre Text Data Preparation en Help Center y File Exchange.

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by