Variables not saved after function completes. Help needed

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 日

1 投票

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.

1 件のコメント

Rick
Rick 2012 年 10 月 14 日
Thanks!! This is exactly what i needed.

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

その他の回答 (2 件)

José-Luis
José-Luis 2012 年 10 月 14 日

2 投票

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 日

1 投票

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)

カテゴリ

ヘルプ センター および File ExchangeApp Building についてさらに検索

タグ

質問済み:

2012 年 10 月 14 日

Community Treasure Hunt

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

Start Hunting!

Translated by