Сохранение промежуточных итераций, for

Обсуждение вопросов, связанных с Partial Differential Equations Toolbox и Comsol MultiPhysics (Femlab)Анализ данных и статистика в MATLAB. Проектирование систем управления в MATLAB\Simulink

Модератор: Admin

Dgira9
Пользователь
Сообщения: 2
Зарегистрирован: Пн окт 29, 2018 1:37 pm

Сохранение промежуточных итераций, for

Сообщение Dgira9 » Пн окт 29, 2018 1:57 pm

Здравствуйте!
Не могу придумать как решить задачу
Необходимо сделать FFT анализ в разные моменты времени. Сам анализ выполняется, через цикл for задал моменты времени, результат выводится в Command window как надо. Но проблема в том, что в Workspace сохраняется только последний результат.
Как сохранить результаты всех итераций в матрицу значений или/и каждую итерацию отдельно?

В качестве исходных данных используется массив времени и амплитуды сигнала

Код: Выделить всё

% Массив для FFT  анализа
FFTDATA_Umax=power_fftscope(Scope_Umax); % Массив для FFT

                        % Параметры FFT для Umax
% Aveilable signals
FFTDATA_Umax.input=1;
FFTDATA_Umax.signal=1;

% FFT setting
for s=1:0.5:9;
   
FFTDATA_Umax.blockName='FFT_Umax';     % Имя блока
[u]FFTDATA_Umax.startTime=s;  [/u]          % Время начала FFT анализа
FFTDATA_Umax.cycles=10;                % Кол-во циклов
FFTDATA_Umax.fundamental=50;           % Основная частота
FFTDATA_Umax.maxFrequency=2000;        % Максимальная вычисляемая частота
FFTDATA_Umax.THDmaxFrequency=Inf;      % Максимальная частота для расчета THD. inf для вычисления THD на частоте Найквиста.
FFTDATA_Umax.freqAxis='Harmonicorder'; % hertz или harmonicorders
                         
FFTresults_Umax=power_fftscope(FFTDATA_Umax) % FFT анализ и сохранение результатов
               
                        % Экспорт результатов FFT анализа
FFTmag_Umax=FFTresults_Umax.mag;       % Амплитуда гармоник
FFTfreq_Umax=FFTresults_Umax.freq;    % Частота (с шагом 5)
FFTphase_Umax=FFTresults_Umax.phase; % Фаза
FFT_THD_Umax=FFTresults_Umax.THD;


% Сохранение THD&mag

sigma2_mag=FFTmag_Umax;     
sigma2_THD=FFT_THD_Umax;

Sniper53
Пользователь
Сообщения: 55
Зарегистрирован: Пн ноя 09, 2015 7:30 pm

Re: Сохранение промежуточных итераций, for

Сообщение Sniper53 » Ср окт 31, 2018 9:12 am

Код не разбирал. Если у Вас одномерное преобразование, то что Вам мешает в сформировать матрицу, где например в каждую строку будет записываться результат итерации? Если двухмерное, то сформировать трехмерный массив...
С наилучшими пожеланиями, Федоров Д.А.

Dgira9
Пользователь
Сообщения: 2
Зарегистрирован: Пн окт 29, 2018 1:37 pm

Re: Сохранение промежуточных итераций, for

Сообщение Dgira9 » Пт ноя 09, 2018 7:55 am

Sniper53 писал(а):Код не разбирал. Если у Вас одномерное преобразование, то что Вам мешает в сформировать матрицу, где например в каждую строку будет записываться результат итерации? Если двухмерное, то сформировать трехмерный массив...

Спасибо за ответ!
Мешает банальное незнание как это сделать
матрицу сформирую, а как записать итерации? Мб есть пример? а там дальше разберусь)

Sniper53
Пользователь
Сообщения: 55
Зарегистрирован: Пн ноя 09, 2015 7:30 pm

Re: Сохранение промежуточных итераций, for

Сообщение Sniper53 » Чт ноя 15, 2018 8:32 am

Dgira9 писал(а):
Sniper53 писал(а):Код не разбирал. Если у Вас одномерное преобразование, то что Вам мешает в сформировать матрицу, где например в каждую строку будет записываться результат итерации? Если двухмерное, то сформировать трехмерный массив...

Спасибо за ответ!
Мешает банальное незнание как это сделать
матрицу сформирую, а как записать итерации? Мб есть пример? а там дальше разберусь)


Код: Выделить всё

i = 1;
FFTresults_Umax(i, :)=power_fftscope(FFTDATA_Umax) % FFT анализ и сохранение результатов
i = i + 1;


При такой записи в цикле будет формироваться матрица, где в каждой строке будут результаты итераций. Правда я у Вас в коде не увидел, где завершается цикл... В случае если размеры векторов результатов всегда разные, то на каждой итерации нужно приводить к одному размеру...
С наилучшими пожеланиями, Федоров Д.А.