how can save all variables which are in function without deleting previous one ?
10 次查看(过去 30 天)
显示 更早的评论
how can save all variables which are in function ? i would like to extract those variables out of function. if i just use "save" command in function, it will delete just previous variable. however, i need all of them not the last one. can anyone help
2 个评论
Stephen23
2018-11-21
Although you have already accepted an answer, I very much doubt that you need to (inefficiently) save and load data each time you call some function. Most likely you could just use output arguments or perhaps a nested function, as it seems that your goal is actually to pass data from the function workspace to the calling workspace.
You would be better off actually describing what your goal is, then you are likely to get solution that actually help you to write better code.
采纳的回答
Majid Farzaneh
2018-11-21
Hi.
You can make a string in each run for your function and then use the string for your file name. for example you may use a global counter in function like this:
function ....
global counter
counter=counter+1; %
str=['file' , num2str(counter) , '.mat'];
...
...
...
save(str)
end
15 个评论
Majid Farzaneh
2018-11-21
编辑:Majid Farzaneh
2018-11-21
First, modify your function:
function [f,w]= F_xy(x,y)
if x>4
w=30;
else
w=20;
end
f=3.*exp(-x)-0.4*y+w; % change the function as you desire
end
Now you have 2 outputs.
Then tou can change main file like this:
clc;
clear all;
h=0.5; % step size
x = 0:h:3; % Calculates upto y(3)
y = [zeros(1,length(x))];
for i=1:(length(x)-1) % calculation loop
[k_1(i), w_1(i)] = F_xy(x(i),y(i));
[k_2(i), w_2(i)] = F_xy(x(i)+0.5*h,y(i)+0.5*h*k_1);
[k_3(i), w_3(i)] = F_xy((x(i)+0.5*h),(y(i)+0.5*h*k_2));
[k_4(i), w_4(i)] = F_xy((x(i)+h),(y(i)+k_3*h));
y(i+1) = y(i) + (1/6)*(k_1(i)+2*k_2(i)+2*k_3(i)+k_4(i))*h; % main equation
end
You can also plot k or w like this:
figure, plot(k_1)
figure, plot(k_2)
figure, plot(k_3)
figure, plot(k_4)
figure, plot(w_1)
figure, plot(w_2)
figure, plot(w_3)
figure, plot(w_4)
更多回答(1 个)
Cris LaPierre
2018-11-21
The specifics are a little unclear, but here are some options.
Consider saving them to a mat file with a unique filename. However, they will still contain the same variable names, so when loaded back into the workspace, will replace any existing variables with the same names.
You could return them through the function output. That allows you to assign them to variables with whatever name you want, allowing you to have both at the same time.
If there are a lot of variables, consider using a structure so you only have to pass out one variable.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Whos 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!