MATLAB Answers

Jason
0

Strange Cell Array error

Asked by Jason
on 21 Jun 2018
Latest activity Commented on by 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
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
on 21 Jun 2018
Thankyou

Sign in to comment.

2 Answers

Answer by Stephen Cobeldick on 21 Jun 2018
Edited by Stephen Cobeldick on 21 Jun 2018
 Accepted Answer

c2 = str2double(data(:,h+1))

  1 Comment

Jason
on 21 Jun 2018
Thanks

Sign in to comment.


Answer by 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.