如何在MATLAB工作区中存储变量

时间:2015-03-27 10:13:22

标签: 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

2 个答案:

答案 0 :(得分:1)

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

如果您的主要目标是完成计算和工作区中的变量,那么我建议将其转换为m脚本而不是函数。

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

答案 1 :(得分:0)

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