Use Value of String Array to name a variable

10 vues (au cours des 30 derniers jours)
Victor Mas
Victor Mas le 2 Déc 2020
Modifié(e) : Stephen23 le 5 Août 2025
Hello,
I'm trying to combine results of multiple files into one struct.
Said struct should be named the following name:
result.[FileName1].Result1ofFile1
result.[FileName1].Result2ofFile1
result.[FileName2].Result1ofFile2
...
result.[FileNameX].ResultYofFileX
I save the file names in an String array. Thus
FileName(1) = "abc1"
FileName(2) = "abc2"
...
and so on.
Unfortunately I can't figure out how to make it work.
How can I use the String stored in an array as a variable name?
At the end it should look like this, without the need of typing in the abc-Names myself:
result.abc1.Result1ofFile1
result.abc2.Result1ofFile2
  1 commentaire
Stephen23
Stephen23 le 2 Déc 2020
Modifié(e) : Stephen23 le 5 Août 2025
"Use Value of String Array to name a variable"
Your question shows that you actually want to name a structure field, not a variable.
One answer to your question would be to use dynamic fieldnames:
But as Ameer Hamza wrote, a much better approach would be to store the filename as data in its own field.

Connectez-vous pour commenter.

Réponse acceptée

Ameer Hamza
Ameer Hamza le 2 Déc 2020
First, I must say that this does not seem to be a good idea. It is better to store filenames as a separate field and create an array of the struct. For your case, something like this might be better.
result = struct('data', {}, 'filename', {});
result(1).data = Result1ofFile1;
result(1).filename = FileName(1);
result(2).data = Result1ofFile2;
result(2).filename = FileName(2);
For your current question, you can try something like this
FileName(1) = "abc1";
FileName(2) = "abc2";
C = cell(1, 2*numel(FileName));
C(1:2:end) = num2cell(FileName);
result = struct(C{:});

Plus de réponses (0)

Catégories

En savoir plus sur Structures dans Help Center et File Exchange

Produits


Version

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by