how can save all variables which are in function without deleting previous one ?
10 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
ADNAN KIRAL
il 21 Nov 2018
Commentato: ADNAN KIRAL
il 21 Nov 2018
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 Commenti
Stephen23
il 21 Nov 2018
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.
Risposta accettata
Majid Farzaneh
il 21 Nov 2018
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 Commenti
Majid Farzaneh
il 21 Nov 2018
Modificato: Majid Farzaneh
il 21 Nov 2018
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)
Più risposte (1)
Cris LaPierre
il 21 Nov 2018
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.
Vedere anche
Categorie
Scopri di più su Whos in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!