Accessing the string elements
59 次查看(过去 30 天)
显示 更早的评论
I have 3 strings like the following:
world=["America", "Europe"]; % Parent String
America=["USA", "Brazil", "Argentina"]; % Child1 String
Europe=["France", "Germany", "England"]; % Child2 String
I want to access the elements of the child string (Country names) from the Parent string(world) and use it inside a for loop for further operation. I am trying in the following way:
for i=1:2
d=world(i); % Temporary variable to store the continent name
for j=1:3
disp(d(j)); % Throws an Error: "Index exceeds Matrix dimensions
end
end
What am I doing wrong? Any help will be highly appreciated.
2 个评论
KL
2017-10-17
You're defining three entirely different variables. Where and how do you want to apply this?
Stephen23
2017-10-17
The simplest and most efficient solution is to use structures and dynamic fields:
Do not try to magically access variable names. Doing so will make your code slow, complex, buggy, hard to debug, inscure. Read this to know why:
采纳的回答
Cedric
2017-10-17
编辑:Cedric
2017-10-17
Here is one way, as string arrays are "iterable".
continents = ["America", "Europe"] ;
countries.America = ["USA", "Brazil", "Argentina"] ;
countries.Europe = ["France", "Germany", "England"] ;
for continent = continents
fprintf('%s :\n', continent ) ;
for country = countries.(continent)
fprintf('\t%s\n', country) ;
end
end
Yet, using dynamic field names for that is usually not advised. You could use cell arrays instead:
continents = {"America", "Europe"} ;
countries{1} = {"USA", "Brazil", "Argentina"} ;
countries{2} = {"France", "Germany", "England"} ;
for continentId = 1 : numel( continents )
fprintf('%s :\n', continents{continentId} ) ;
for countryId = 1 : numel( countries{continentId} )
fprintf('\t%s\n', countries{continentId}{countryId} ) ;
end
end
9 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!