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

조회 수: 1 (최근 30일)
JB
JB 2018년 4월 29일
댓글: JB 2018년 4월 29일
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]

채택된 답변

Rik
Rik 2018년 4월 29일
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
JB
JB 2018년 4월 29일
I am using matlab b2015b. I will try to take the function out into a seperate file.
JB
JB 2018년 4월 29일

PERFECT.. Thanks a lot Rik

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

태그

제품

Community Treasure Hunt

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

Start Hunting!

Translated by