MATLAB Answers

1

storing data from function

Asked by Jonathan on 31 May 2012
Hi,
I have this code in my function file: [sound, freq] = wavread(file) and for some reason sound and freq are not being stored in the workspace. What am I doing wrong?

  1 Comment

But when I enter [sound, freq] = wavread(file) into the command line, the variables store in the workspace.

Sign in to comment.

2 Answers

Answer by Oleg Komarov on 31 May 2012
 Accepted Answer

If you're using wavread inside a function then you have to return them to your base workspace explicitly because the workspace of a function is kept separate.
Example, will not return sound and freq to the base workspace:
function foo(file)
[sound, freq] = wavread(file)
end
You have to declare the outputs explicitly:
function [sound, freq] = foo(file)
[sound, freq] = wavread(file)
end
and call it as
[out1,out2] = foo(file)

  2 Comments

I tried that. sound and freq show up in the command line, but not in the workspace.
nevermind, I had a bit of code at the very end that wasn't defined so the function wasn't finishing. Thanks for the help!

Sign in to comment.


Answer by Stephen
on 31 May 2012

So, you have:
function something
[sound, freq] = wavread(file);
end
? If so, you need to output those values like
function [sound, freq] = something
then when you call the function, it will spit out those values. Otherwise, they only exist in the temporary workspace of the function, which gets cleared out when it's done

  2 Comments

I tried that. sound and freq show up in the command line, but not in the workspace.
nevermind, I had a bit of code at the very end that wasn't defined so the function wasn't finishing. Thanks for the help!

Sign in to comment.