如何在MATLAB工作空间中存储变量



我有一个MATLAB函数,当我尝试运行它时,它不会将输出变量存储在工作区中。请让我知道正确的解决方案,以便将函数中的变量存储在工作区中。

我有下面的代码,其中我必须将变量T和Y的值存储在工作空间中。

function him1
k0 = ones(1,5);
exp=[0.2;0.12;0.24;0.2];      %//experimental data
time=[0;1;2;3];  %//time span
%// initial values of state variables
x01=1;
x02=1;
x03=1;
x04=1;
x0 = [x01,x02,x03,x04];
tspan = [min(time),max(time)];
k_opt = fminsearch(@minimize, k0)
function e = minimize(k0)
            [~,y_hat] = ode45(@unit2, tspan, x0,[], k0);
           % size(y_hat)
%             y_hat = deval(sol, time(end)); % // evaluate solution at given times
            e = sum((y_hat(end,:)' - exp).^2) % // compute squarederror '          
end
% // plot with optimal parameter
[T,Y] = ode45(@unit2, tspan, [x01,x02,x03,x04], [], k_opt);
figure
subplot(1,2,1)
plot(time(end), exp, '*', 'markersize',15)
hold on
plot(T,Y, 'linewidth', 2)
end
function dx = unit2(t, x, k)
dx = zeros(4,1);
dx(1)=-k(1)*x(1)*7 + k(2)*x(2);
dx(2)=k(1)*x(1)*7 - k(2)*x(2) -k(3)*x(2)*x(2) + k(4)*x(3);
dx(3)=k(3)*x(2)*x(2) - k(4)*x(3)-k(5)*x(4);
dx(4)=k(5)*x(4);
end

函数的一个特点是,只有在声明中定义的变量才会移交给工作区。(如果忽略全局变量和assignin等更复杂的概念)

如果你的主要目标是完成计算并在工作空间中输入变量,那么我建议将其转换为m-script,而不是函数。

请参阅:http://de.mathworks.com/help/matlab/matlab_prog/scripts-and-functions.html

您可以尝试将变量标识为global

最新更新