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 Kommentare

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

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 17 Sep. 2012

0 Stimmen

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)

Weitere Antworten (3)

MJ
MJ am 18 Sep. 2012

0 Stimmen

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 Kommentare

Azzi Abdelmalek
Azzi Abdelmalek am 18 Sep. 2012
Is there a problem with the code?
Azzi Abdelmalek
Azzi Abdelmalek am 18 Sep. 2012
Bearbeitet: Azzi Abdelmalek am 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)

Melden Sie sich an, um zu kommentieren.

MJ
MJ am 28 Sep. 2012

0 Stimmen

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 Kommentare

Azzi Abdelmalek
Azzi Abdelmalek am 28 Sep. 2012
Bearbeitet: Azzi Abdelmalek am 28 Sep. 2012
format your code
can you post samples of your data?
MJ
MJ am 1 Okt. 2012
I have just added codes and raw datas below.

Melden Sie sich an, um zu kommentieren.

MJ
MJ am 1 Okt. 2012

0 Stimmen

%%%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'

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by