Effacer les filtres
Effacer les filtres

function 'subsindex' is not defined for values of class 'string'

15 vues (au cours des 30 derniers jours)
Mattijs Mientki
Mattijs Mientki le 21 Juin 2018
This is roughly my code Only sometimes I have less or more inputs in the array "nam" In some situations i get the error " 'subsindex' is not defined for values of class 'string'" I looked for this, but could not find it and I do not understand what the error message means.
nam = ["t1" , "t3" , "t4"];
for j=1:3
figure
title( ['title start' nam(j) ] )
end
  5 commentaires
Geoff Hayes
Geoff Hayes le 21 Juin 2018
Modifié(e) : Geoff Hayes le 21 Juin 2018
Mattijs - is nam always an array or can it just be a string (in your code)? For example, if you have
someString = "hello";
someString(1)
What happens? Unfortunately, my version of MATLAB doesn't support creating strings (as opposed to character arrays) so I am wondering if, in some cases, your nam is just a string and not an array of strings and so treating the string object as if it were an array (using nam(j)) generates the error...
Mattijs Mientki
Mattijs Mientki le 21 Juin 2018
I think it can but also this code you have works fine for me. I think it has to do indeed with matlab versions. I just found out my colleague has a code which gives the error in matlab2018b and myself have matlab2017b and I have not errors with exactly the same code

Connectez-vous pour commenter.

Réponse acceptée

Steven Lord
Steven Lord le 21 Juin 2018
Rename the variable named title in your workspace so you can use the title function again.
When the error message refers to subsindex, it means you're trying to use an object as the index into a variable but MATLAB doesn't know how to interpret that object as an index and the variable into which you're trying to index hasn't had its indexing implemented to handle that situation.
In your case, you've done something like this but with potentially many lines between the first and second line of my example (so you forgot you created a variable named title) and with title instead of f as the name.
>> f = (1:10).^2;
>> f("5")
Function 'subsindex' is not defined for values of class 'string'.
  4 commentaires
Steven Lord
Steven Lord le 16 Déc 2018
Correct. You intend to call a function, but because you have a variable with the same name as the function and variables are higher precedence than functions MATLAB treats that code as an attempt to index into the variable.
Bachtiar Muhammad Lubis
Bachtiar Muhammad Lubis le 20 Déc 2018
ow "variables are highers precedence than function" thanks a lot steven lord.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by