MATLAB Answers

Strange Cell Array error

2 views (last 30 days)
Jason
Jason on 21 Jun 2018
Commented: Jason on 21 Jun 2018
Hello. I have a cell array in a uitable that I want to find the min of the columns 2,3,4,5 - and for each column, extract the z position from the file name that corresponds to that minimum.
for h=1:4 %first column is filename, so start at 2
h
data(:,h+1)
class(data)
c2=str2num(cell2mat(data(:,h+1))) %Select column fwhmH=2 etc.
c2min=min(c2(:));
c2idx=find(c2==c2min);
text=cell2mat(file(c2idx));
C = strsplit(text,'zPos_');
class(C);
C=cell2mat(C(2));
D=strsplit(C,'.tif')
data2=horzcat(data2,D(1))
end
set(handles.uitable2,'data',data2)
However, on the 3rd loop (h=3), for the following code
h
data(:,h+1)
class(data)
c2=str2num(cell2mat(data(:,h+1))) %Select column fwhmH=2 etc.
I get the following output and error
h =
3.00
ans =
3×1 cell array
{'8317' }
{'10974'}
{'14623'}
ans =
'cell'
Error using cat
Dimensions of matrices being concatenated are not consistent.
Error in cell2mat (line 83)
m{n} = cat(1,c{:,n});
I can't understand why as on the 1st & 2nd loop that correctly works, the data is of the same type - i.e. cell array

  2 Comments

Dennis
Dennis on 21 Jun 2018
Your cell entries are strings. You get that error message because '8317' has 4 chars and your other 2 cell entries have 5.
c2 = cellfun(@str2double,data(:,h+1));
Jason
Jason on 21 Jun 2018
Thankyou

Sign in to comment.

Accepted Answer

Stephen Cobeldick
Stephen Cobeldick on 21 Jun 2018
Edited: Stephen Cobeldick on 21 Jun 2018
c2 = str2double(data(:,h+1))

  1 Comment

Jason
Jason on 21 Jun 2018
Thanks

Sign in to comment.

More Answers (1)

Sayyed Ahmad
Sayyed Ahmad on 21 Jun 2018
try this codes
data={'8317';'10974';'14623'}
for i=1:3
c2(i)=str2num(data{i})
end

  0 Comments

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!