why does size() not work in function but does in workspace

3 views (last 30 days)
I have a the same 4x2 cell array (fileList), in workspace, size() gives me the results I expect, but in a function results are way different.
Workspace
size(fileList), ans=4 2
size(fileList{2,1},1), ans = 9
function
size(fileList), ans=1 1
size(fileList{2,1},1), ans = Index exceeds matrix dimensions.
Other functions that don't behave as expected when not in workspace:
fileList{n,m}
fileList(n,:)
  2 Comments
Guillaume
Guillaume on 1 Dec 2015
Can we see the declaration of the function (the line that says function something = funname(something)) and the way you call the function?
SteveH
SteveH on 1 Dec 2015
Edited: Guillaume on 1 Dec 2015
workspace
fileList= <4x2 cell>
readvars ={filelist,xdim,ydim,bitdepth,skip_bytes,pad_bytes,cntr};
imageList=readRaw (readvars);
function imageList = ReadRaw (readVars)
tfileList = readVars(1); .........
the function recognizes tfileList as a 4x2 cell

Sign in to comment.

Accepted Answer

Guillaume
Guillaume on 1 Dec 2015
You need to understand the difference between () and {} when applied to cell array. () returns a portion of a cell array as a cell array. {} returns the content of the cell array.
So, readvars(1) is a 1x1 cell array which is just the readvars cell array trimmed to 1 element
readvars{1} is the first element of the cell array.
Therefore, change the first line of your function to
tfilelist = readVars{1};
and all shall be well.
  1 Comment
SteveH
SteveH on 1 Dec 2015
Thanks to valdal: I could see passing cell array like in his example worked, so it had to be..... Thanks to Guillaume: I trip over those darn ({[]}) too often.
ALL IS WELL!

Sign in to comment.

More Answers (1)

valdal
valdal on 1 Dec 2015
Hi,
On my computer, I don't have any problem :
fileList = cell(4,2)
fileList{2,1} = rand(9,1)
size(fileList)
size(fileList{2,1},1)
f(fileList)
with f.m :
function f(a)
size(a)
size(a{2,1},1)
end
In both cases I got :
ans =
4 2
ans =
9
Are you sure that you give the whole cell array to your function ? It's look like in the function fileList is only one element.

Tags

Community Treasure Hunt

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

Start Hunting!