Variables not saved after function completes. Help needed

6 次查看(过去 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.

采纳的回答

Arthur
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
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
  1 个评论
Rick
Rick 2012-10-14
I see.
I have the same numbers of variables for each file. But the names are all different.
As such, i want to save the variables as what they were named.

请先登录,再进行评论。


Azzi Abdelmalek
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)

类别

Help CenterFile Exchange 中查找有关 File Operations 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by