Invalid array indexing before arguing variable
Show older comments
For example,
sheetnames(FullFilePath)
This will give me string array (e.g., 5x1).
So, I tried to access directly one of elements like below
sheetnames(FullFilePath)(1)
But, this did not work.
A = sheetnames(FullFilePath)
A(1)
However, after arguing variable, if I do the same approach, then I could access the element.
Why does this happen? what is the difference between first and second approach.
I thought both looks the same.
3 Comments
Walter Roberson
on 1 May 2023
sheetnames is defined as as a function returning a string array.
You cannot directly use () or {} indexing on the return value from a function, so
sheetnames(FullFilePath)(1)
is invalid as that is trying to do () indexing on the return value of a function.
The only kind of indexing that you can do on the return value from a function is dot indexing
This is a limitation on the MATLAB parser .
There is some history behind it. Consider for example,
ones(2)
If you were permitted to directly index the result of a function call, you would not be able to tell whether ones(2) is a call to function ones with parameter 2, or if it is instead a call to function ones with no parameters, with the result to be indexed at (2) .
the cyclist
on 1 May 2023
Coincidentally, @Walter Roberson, I just happened to be looking at your answer to the What is Missing from MATLAB? thread today. (That page takes forever to load now.)
Hokon
on 2 May 2023
Accepted Answer
More Answers (0)
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!