why does size() not work in function but does in workspace
조회 수: 7 (최근 30일)
이전 댓글 표시
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
Guillaume
2015년 12월 1일
Can we see the declaration of the function (the line that says function something = funname(something)) and the way you call the function?
채택된 답변
Guillaume
2015년 12월 1일
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개)
valdal
2015년 12월 1일
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.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Spreadsheets에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!