我正在解決一個非常大的優化問題。目標函數和約束函數需要大量的數據。目前,我將這些數據作爲結構傳遞給他們。在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ó我將你的方法應用於我的問題,但它並沒有減少'CPU時間'。我使用'Dat Struct'的初始代碼需要262秒,這個類定義需要302秒。我曾嘗試在課堂上初次化Dat,並在課堂以外的時間初始化Dat,但仍需要302秒。我也應該說,我使用的'Dat struct'幾乎是巨大的,它通過許多函數並被更新。但是'dat struc'似乎比''class'版本更有效率。 –