saving variables contained within a function

I need to save variables that are computed inside a function (called from a header) without providing them as output parameters. I can't use 'save' because the function is called inside a loop and it overwrites (the variables computed change over time). Is the only way to accomplish this through 'fprintf'?

 채택된 답변

Rick Rosson
Rick Rosson 2011년 6월 28일

0 개 추천

It is probably not the only way to accomplish this task, but it will certainly work.
You can use fprintf to print to a text file instead of to the command window. Please check the documentation:
doc fopen
doc fclose
doc fprintf
The code would be something like:
filename = 'data.txt';
txt = fopen(filename,'w')
...
...
for ...
...
fprintf(txt, '...\n' , ...);
...
end
...
...
fclose(txt);
...
...
HTH.
Rick

추가 답변 (2개)

Matt Fig
Matt Fig 2011년 6월 28일

0 개 추천

Have you looked into the -append option of SAVE?

댓글 수: 1

yes but as i understand i would have to create a new name for the variable each time the function is called....the help documentation for save using append has this:
Note Saving with the -append option does not append additional elements to any arrays that are already saved in the MAT-file.
so if i went this route i would have to create a new name each time right?

댓글을 달려면 로그인하십시오.

Rick Rosson
Rick Rosson 2011년 6월 28일

0 개 추천

Another approach would be to declare a persistent variable that will accumulate the results each time you call the function, and then perhaps write the results out to a MAT file the last time you call the function.
Please check the documentation:
doc persistent
The function template would be:
function y = foo(x)
persistent results
if isempty(results)
results = zeros(...);
end
...
...
end
HTH.

카테고리

도움말 센터 및 File Exchange에서 Entering Commands에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by