# Effective way to convert/create matrix from mixed cell/string

1 visualizzazione (ultimi 30 giorni)
JB il 29 Apr 2018
Commentato: JB il 29 Apr 2018
I have a cell array like the one below and I need a fast and effective way to 1) remove the empty columns, 2) convert the cells containing a string with "#" to the number after the "#" (6.504), and finally 3) create or convert the whole cell array to a data matrix like "data" below. Is there a smart way to do all this? Sometimes there might be more that one string located somewhere else, so I need a way to find everyone in the cell array. Any suggestions are highly appreciated.
array ={
[47.4500] '' [23.9530] '' [12.4590]
[34.1540] '' [15.1730] '' [ 9.6840]
[45.2510] '' [23.3770] '' [13.0670]
[29.9350] '' [14.8680] '' '# 6.504'}
data =[
47.4500 23.9530 12.4590
34.1540 15.1730 9.6840
45.2510 23.3770 13.0670
29.9350 14.8680 6.5040]
##### 0 CommentiMostra -2 commenti meno recentiNascondi -2 commenti meno recenti

Accedi per commentare.

### Risposta accettata

Rik il 29 Apr 2018
array ={
[47.4500] '' [23.9530] '' [12.4590]
[34.1540] '' [15.1730] '' [ 9.6840]
[45.2510] '' [23.3770] '' [13.0670]
[29.9350] '' [14.8680] '' '# 6.504'};
array=cellfun(@convert_to_value,array,'UniformOutput',false);
data=cell2mat(array);
function out=convert_to_value(in)
if ischar(in) && ~isempty(in) && strcmp(in(1),'#')
out=str2double(in(2:end));
elseif isempty(in)
out=[];
else
out=in;
end
end
##### 4 CommentiMostra 2 commenti meno recentiNascondi 2 commenti meno recenti
JB il 29 Apr 2018
I am using matlab b2015b. I will try to take the function out into a seperate file.
JB il 29 Apr 2018

PERFECT.. Thanks a lot Rik

Accedi per commentare.

### Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by