Использование XLS читать в MATLAB и forloop - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь сохранить некоторые данные из MATLAB в Excel.

Это очень многократно, и я надеялся использовать цикл for, чтобы значительно сократить количество строк кода, которые я использую.

Чтобы привести пример:

APPLES = rand(1,10);
PEARS = rand(1,10);
Horizon = (1:10);
% Writing to excel 
xlswrite('Results.xlsx',APPLES,'Apple','B2')
xlswrite('Results.xlsx',Horizon,'Apple','B1')

%Pears
xlswrite('Results.xlsx',PEARS,'Pear','B2')
xlswrite('Results.xlsx',Horizon,'Pear','B1')

Приведенный выше код создаст таблицу Excel под названием Results с двумя таблицами Apple и Pear с данными, которые мне нужны.

Можно ли создать цикл for, чтобы уменьшить количество кода, так как я на самом деле использую 200 фруктов, поэтому он начинает занимать много места и времени, чтобы писать их вручную?

Я пытался сделать это вручную, что отнимает много времени, и я также пробовал этот метод, который не работает:

%test

Apples = rand(1,10);
Pears = rand(1,10);
Horizon = (1:10);

names1 = {'Apples' 'Pears'};
%%
for ii = 1:length(names1)
% Writing to excel 
xlswrite('Results22.xlsx',fprintf(names1{ii}),names1{ii},'B2')
xlswrite('Results22.xlsx',Horizon,names1{ii},'B1')
end

1 Ответ

2 голосов
/ 16 апреля 2019

Проблема в том, что внутри цикла вы вызываете строку, которая представляет имя переменной, а не саму переменную.

Например, fprintf(names1{ii}) дает строку «Яблоки» вместопеременная Apples, которая содержит значения.

Чтобы решить эту проблему, и для хорошей практики не держать 200 фруктов в рабочей области, вы можете определить фрукты как поля структуры.Затем вы можете получить к нему доступ с помощью динамического имени поля :

fruit_names = {'Apples', 'Pears'};
Horizon = (1:10);

for k=1:length(fruit_names)
   fruit.(fruit_names{k}) = rand(1,10);
   xlswrite('Results22.xlsx',fruit.(fruit_names{k}),fruit_names{k},'B2')
   xlswrite('Results22.xlsx',Horizon,fruit_names{k},'B1')
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...