Character in cell array, read and write

Hello all,
I have a data in cell something like this:
1 BCS ACK/NACK 2054 0.00000 10.0000 Inside
[Note: actually I have 100 lines like above]
Now what I want to do is break this into different colum and save to excel sheet so that I can creat some graphs. Can anyone suggest how to, pls?
BR MJ

2 commentaires

Azzi Abdelmalek
Azzi Abdelmalek le 17 Sep 2012
what is the size of your cell array
MJ
MJ le 26 Sep 2012
Hello Azzi,
Your code has been helpful, thanks a lot:-).
BR MJ

Connectez-vous pour commenter.

 Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 17 Sep 2012
A={'1 BCS ACK/NACK 2054 0.00000 10.0000';'1 BCS ACK/NACK 2054 0.00000 10.0000'}
res=cellfun(@(x) regexp(x,' ','split'),A,'uni',false)
out=[]
for k=1:numel(res)
out=[out;res{k}]
end
xlswrite('file.xls',out)

Plus de réponses (3)

MJ
MJ le 18 Sep 2012

0 votes

Hello Azzi,
Thank you for your answer.
The problem is I have space bewteen followings:
1 BCS ->1 BCS BCS ACK/NACK ->BCS ACK/NCK
and so on.
The thing is the data is in char format as these are copied from .txt files. Now when I want to save it on XLS the spacing creating a huge problem showing matlab error. May I ask, how can I remove this spacing?
/MJ

2 commentaires

Azzi Abdelmalek
Azzi Abdelmalek le 18 Sep 2012
Is there a problem with the code?
Azzi Abdelmalek
Azzi Abdelmalek le 18 Sep 2012
Modifié(e) : Azzi Abdelmalek le 26 Sep 2012
In case you have more then one blanck
A={'1 BCS ACK/NACK 2054 0.00000 10.0000';'1 BCS AK/NCK 2054 0.00 10.0000'}
res=cellfun(@(x) regexp(x,' ','split'),A,'uni',false)
out=[]
for k=1:numel(res)
q=res{k};
q(cellfun(@(x) length(x)==0,q))=[]
out=[out;q]
end
xlswrite('file.xls',out)

Connectez-vous pour commenter.

MJ
MJ le 28 Sep 2012
Hello Azzi,
I have a question as shown below:
Code starts here: files=[]; out=[];
for k=1:5 %Reading files: file1.txt through file5.txt textFilename=['File' num2Str(k) '.txt']; % opening each files FiletoOpen=fopen(textFilename,'r'); % all files-just for information files=[files; textFilename]; % all files-just for information % Data{k}= textread(textFilename, '%s', 'delimiter', '\n'); %
% pattern: \s: Whitespace, +: match one or more occurences
pat = '\s+';
res=cellfun(@(x) regexp(x,pat,'split'),Data{k},'uni',false)
for m=1:numel(res)
q=res{m};
q(cellfun(@(x) length(x)==0,q))=[]
out=[out; q]
end
end
I get something like this: '1' 'BCS' 'ACK/NACK' '2054' '0' '10' 'Inside' '2' 'BCS' 'ACK/NACK' '30107' '0,1395' '10' 'Inside' '3' 'BCS' 'ACK/NACK' '30119' '0,16933' '10' 'Inside'
[Note: this is OK when I transfer datas from Matlb to Excel-I can plot raw datas]
I would like to have following instead above so that I can plot from Matlab directly:
1 BCS ACK/NACK 2054 0 10 Inside
I am not sure what is going wrong in my code-any advice will be appreciated.
Regards
/MJ

2 commentaires

Azzi Abdelmalek
Azzi Abdelmalek le 28 Sep 2012
Modifié(e) : Azzi Abdelmalek le 28 Sep 2012
format your code
can you post samples of your data?
MJ
MJ le 1 Oct 2012
I have just added codes and raw datas below.

Connectez-vous pour commenter.

MJ
MJ le 1 Oct 2012
%%%code starts from here:
files=[];
out=[];
for k=1:5
textFilename=['File' num2Str(k) '.txt'];
FiletoOpen=fopen(textFilename,'r');
files=[files; textFilename];
Data{k}= textread(textFilename, '%s', 'delimiter', '\n'); %
pat = '\s+';
res=cellfun(@(x) regexp(x,pat,'split'),Data{k},'uni',false)
for m=1:numel(res)
q=res{m};
q(cellfun(@(x) length(x)==0,q))=[]
out=[out; q]
end
end
Sample of Data:
'1' 'BCS' 'ACK/NACK' '2054' '0' '10' 'Inside'
'2' 'BCS' 'ACK/NACK' '30107' '0,1395' '10' 'Inside'
'3' 'BCS' 'ACK/NACK' '30119' '0,16933' '10' 'Inside'
'4' 'BCS' 'ACK/NACK' '30132' '3,23908' '10' 'Inside'
'5' 'BCS' 'ACK/NACK' '30134' '2,96011' '10' 'Inside'
'6' 'BCS' 'ACK/NACK' '2073' '0' '10' 'Inside'
'7' 'BCS' 'ACK/NACK' '30136' '2,29958' '10' 'Inside'
'8' 'BCS' 'ACK/NACK' '30141' '2,18639' '10' 'Inside'
'9' 'BCS' 'ACK/NACK' '2054' '0' '10' 'Inside'
'10' 'BCS' 'ACK/NACK' '30118' '0,16269' '10' 'Inside'
'11' 'BCS' 'ACK/NACK' '30118' '0,15273' '10' 'Inside'
'12' 'BCS' 'ACK/NACK' '30135' '3,33499' '10' 'Inside'
'13' 'BCS' 'ACK/NACK' '30142' '2,71714' '10' 'Inside'
'14' 'BCS' 'ACK/NACK' '2073' '0' '10' 'Inside'
'15' 'BCS' 'ACK/NACK' '30129' '2,10428' '10' 'Inside'

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by