Variables not saved after function completes. Help needed
11 次查看(过去 30 天)
显示 更早的评论
Hi all,
I have this function in checkfile.m
function [] = checkfile(filename, pathname)
if isequal(filename,0)
warndlg('File not selected.', 'Warning!', 'modal');
else
cd(pathname);
load(filename); % load variables
end
end
Inside this file, there are a number of variables. When this function completes, the variables are deleted. I do not want to save the variables as an array.
For example, inside file1.mat, there are 3 variables, a,b & c.
I want these 3 variables, a,b & c to be in the workspace as it is after the function exits.
How can I make the functions such that the variables do not delete itself after the function exits.
0 个评论
采纳的回答
Arthur
2012-10-14
The cleanest (and probably fastest) method is to let load(filename) store into a variable, and let the function return this variable. So like this
function myData = checkfile(filename, pathname)
if isequal(filename,0)
warndlg('File not selected.', 'Warning!', 'modal');
myData = [];
else
cd(pathname);
myData = load(filename); % load variables
end
end
Note that I also added myData = [] for the case that there was no file selected. Otherwise your function would fail in this case.
myData will be a structure containing all the variables of the file. So in your case it will contain myData.a, myData.b and myData.c.
更多回答(2 个)
José-Luis
2012-10-14
Have the function return the variables you want to keep, otherwise they are destroyed upon exit.
function [a,b,c] = checkfile(filename,pathname)
%etc
Azzi Abdelmalek
2012-10-14
编辑:Azzi Abdelmalek
2012-10-14
In your function use
data=load(filename)
If filname.mat contains variables x y and z, you can get them, after caling your function
data= checkfile(filename,pathname)
by:
x=data.x
y=data.y
z=data.z
and don't forget to change, like mentioned by José luis
function data=checkfile(filename,pathname)
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!