Используйте внутренний цикл writetable в Matlab

Я пытаюсь использовать команду writetable внутри цикла. Любая помощь?

Почему вы полностью опустошили вопрос? Теперь люди, читающие ответ, не могут понять, чем он может быть полезен...

Hoki 09.11.2022 14:28
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
77
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
MonthNames=['JAN'; 'FEB'; 'MAR'; 'APR'; 'MAY'; 'JUN'; 'JUL'; 'AUG'; 'SEP'; 'OCT'; 'NOV'; 'DEC'];
for sensorIndex = 1:numel(sensor)
    for monthIndex = 1:numel(MonthNames)
        % Get the current sensor
        k = sensor(sensorIndex);

        % Get the file(s?) associated with that sensor
        S = dir(fullfile(path, '*', sprintf('sensor%d.xls', k));

        % Create an output filename
        filename = sprintf('sensor%d_%s.xls', k, MonthNames(monthIndex));
        
        % do your stuff
        F = fullfile(S(k).folder,S(k).name);
        data = readtable(F);
        writetable(data, filename);
    end
end

Таким образом, вы можете не иметь ВСЕ месяцы. Существует множество способов кодирования, но лично я предпочитаю сохранять переменные цикла в виде индексов и получать текущую переменную внутри цикла, используя этот индекс.

@mathew81 добавил это в цикл, где я написал % do your stuff. В противном случае вам нужно кэшировать и восстанавливать имена файлов, но тогда вы просто зацикливаетесь позже, чтобы перебирать кешированные имена файлов. Просто делайте все по кругу.

Chuck 31.10.2022 12:25

Меня смущает синтаксис команды writetable.

mathew81 31.10.2022 17:55

@ mathew81 mathew81 Меня смущает, как ваш код, кажется, добавляет все данные датчика к одной переменной out, а затем записывает это в xls-файл последнего датчика за январь. В коде, который я предоставил, вы должны вызвать writetable(out, filename); там, где написано % do your stuff, но вы также должны поместить некоторые данные в out, прежде чем делать это. В вашем примере похоже, что вы просто читаете таблицы, а затем записываете те же самые таблицы, поэтому, к сожалению, я не могу дать вам совет, что там изменить.

Chuck 01.11.2022 01:31

возможно, команда writetable должна быть внутри цикла, но с индикатором для смены датчика (например, «sensor» (ci). «_January.xls»). Это та часть, в которой мне нужна помощь.

mathew81 01.11.2022 10:01

@ mathew81 - я отредактировал ответ, чтобы попытаться включить ваш код, но, надеюсь, это дает вам понять, что опубликованный вами код на самом деле не показывает нам, что вы пытаетесь сделать. Похоже, вы загружаете файл, а затем записываете этот файл. Если предполагается, что часть S = dir извлекает несколько файлов, вам нужно будет перебирать эти файлы, поэтому у вас будет третий цикл внутри, например, for fileIndex = 1:numel(S), а затем currentFile = S(fileIndex), в основном, и вы можете сделать свой out = [out; data], но я не знаю, что вы пытаетесь сделать, так что это лучшее, что я могу помочь.

Chuck 01.11.2022 15:33

приведенный выше код работает нормально, но имена файлов, созданных с помощью команды xlswrite, - sensor1A, sensor1B...sensor5E и т. д. Поэтому что-то нужно исправить в filename = sprintf('sensor%d_%s.xls', k, MonthNames (Индекс месяца)); линия. Спасибо за ваше время!

mathew81 02.11.2022 10:33

@ mathew81 - Вы не предоставили определение для вектора sensor, но если вы хотите использовать индекс датчика вместо того, что у вас есть в качестве имени датчика, замените k на sensorIndex в команде sprintf. Если имена ваших датчиков являются строками, а не числами, то, честно говоря, я удивлен, что форматирование %d дает вам что-то.

Chuck 02.11.2022 15:17

Другие вопросы по теме