Я решаю очень большую проблему оптимизации. Функция объектной функции и ограничения требует многочисленных данных. В настоящее время я передаю данные как структуру для них.Эффективный способ передачи данных между функциями MATLAB
myFS(X, Dat, g_Index, f_Index) % Dat is a structure which includes many variables
Считаете ли вы, что это эффективный способ сократить истекшее время?
Какие существуют лучшие альтернативы?
Это означает, что данный ответ, относящийся к определению класса, означает?
%% First we define the class in a separate file:
classdef myDataStructure < handle
properties
NRES;
NOBJ;
NVAR;
end
methods
function obj = myDataStructure()
end
end
end
%% In another file where the main program is, we initialize the class.
Dat = myDataStructure();
%% Initialize
Dat.NRES = 1;
Dat.NOBJ = 1;
Dat.NVAR = 1;
[myF, Dat_updated] = BBB(Dat);
%% Here we define the function and use the class
function [f, CalssDat] = BBB(CalssDat)
x = CalssDat.NRES;
y = CalssDat.NOBJ;
z = CalssDat.NVAR;
f = x + y + z;
CalssDat.NOBJ = 2;
end
Да, я имел в виду это в своем ответе. Следует иметь в виду только одну вещь: в вашей строке '[myF, Dat_updated] = BBB (Dat);', 'Dat_updated' и' Dat' будут одинаковыми (т. Е. У обоих из них будет 'ClassDat.NOBJ' равный '2') –
Это очень хорошо. Я собираюсь применить его по моему методу. Спасибо @ TamásSzabó –
@ TamásSzabó Я применил свой метод к моей проблеме, но это не уменьшило время процессора. Мой начальный код с 'Dat Struct' занимает' 262' сек и с этим определением класса занимает 302 сек. Я попытался инициализировать Dat один раз в классе и в другое время вне класса, но все равно он занимает 302 секунды. Я также должен сказать, что используемая мной DAT-структура почти огромна, и она проходит через многие функции и обновляется. Но все же 'Dat struc' кажется более эффективным, чем версия' class'. –