String in matrix for loop
Show older comments
I have created the below for loop. The txt files are all composed by 16 elements, the first 8 are string and the seconde 8 are number and are separated by comma. At the moment I created a matrix with only the last 8 value. Is it possible also to create a matrix (no structure, no array) with also the first 8 string?
fileList = dir( '*.txt' );
for i = 1 : numel(fileList)
nameFile{i} = fileList(i,1).name;
NAME = char(nameFile(i) );
fid = fopen( NAME );
val = textscan( fid, '%s', 'delimiter', ',' );
fclose( fid );
if val{1,1}{5,1} == 'LIMA' | val{1,1}{6,1} == 'VOCI'
% for jj = 1 : 7
% VAL (i,jj)= char(val{1,1}{jj,1});
% end
for j = 8 : size( val{1,1},1 )
A(i, j) = str2num( val{1,1}{j,1} );
end
end
end
Answers (1)
Daniel Shub
on 25 Oct 2011
0 votes
It really depends on what data type you are willing to allow. You say no structure and no array. MATLAB only deals with arrays; scalars are arrays with a length of 1. It seems like you also do not want cell arrays, since your data from textscan is a cell array.
6 Comments
Maurizio
on 25 Oct 2011
Daniel Shub
on 25 Oct 2011
Isn't that exactly what val{1,1} is? Do you want A = val{1,1}? Then the size(A) should be 14x1.
Maurizio
on 25 Oct 2011
Daniel Shub
on 25 Oct 2011
If you are trying to avoid having M be a cell array, then there is no easy way to do it. If you are trying to have M be a rotated version of val, then M = rot90(val{1,1}, 3) will do it.
Maurizio
on 25 Oct 2011
Maurizio
on 25 Oct 2011
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!