Strange Cell Array error

조회 수: 8 (최근 30일)
Jason
Jason 2018년 6월 21일
댓글: Jason 2018년 6월 21일
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
Dennis
Dennis 2018년 6월 21일
편집: Dennis 2018년 6월 21일
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 2018년 6월 21일
Thankyou

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

채택된 답변

Stephen23
Stephen23 2018년 6월 21일
편집: Stephen23 2018년 6월 21일
c2 = str2double(data(:,h+1))

추가 답변 (1개)

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

카테고리

Help CenterFile Exchange에서 Operators and Elementary Operations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by