MATLAB: Function

function

My code pulls some data out of binary files and puts this data into an Array. When the code is done running I can see this Array in the Workspace window. However, When I turn my code into a function, once executed, I can not see the resulting Array int the Workspace.
function getchan(wd)
files = dir('*.bin');
DATA=[];
tic;
for i=1:100 %length(files)
[d] = readbin (files(i).name);
data=(d(:,1));
DATA=[DATA;data]
end
toc;
end
I also would like to be able to call this function and provide the directory to execute on as in getchan('directory') however, with code as is now, I have to make that directory the current directory first and then run the function by typing getchan

Best Answer

Baba, variables created inside a function are limited to that function's scope. If you want to have DATA available outside the function, you should make that function return the DATA variable:
function DATA = getchan(wd)
% Search for .bin files in the wd directory
files = dir(fullfile(wd,'*.bin'));
DATA=[];
% Loop over every .bin file and build up DATA
for i=1:length(files)
% Make sure we're reading from the wd directory
d = readbin (fullfile(wd,files(i).name));
% Append the first column of what we read to DATA
DATA=[DATA; d(:,1)];
end
end
Now you can simply call:
MY_DATA = getchan(pwd)
Note above that I've also used "fullfile", passing in "wd" from your function to make your function work specifically on the directory stored in "wd".
Related Question