how can save all variables which are in function without deleting previous one ?

26 ビュー (過去 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
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.
ADNAN KIRAL
ADNAN KIRAL 2018 年 11 月 21 日
i see, thanks

サインインしてコメントする。

採用された回答

Majid Farzaneh
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
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)
ADNAN KIRAL
ADNAN KIRAL 2018 年 11 月 21 日
i got that

サインインしてコメントする。

その他の回答 (1 件)

Cris LaPierre
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 ExchangeWhos についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by