Workspace not saving - just disappearing!

14 ビュー (過去 30 日間)
10B
10B 2015 年 9 月 28 日
コメント済み: 10B 2015 年 9 月 28 日
Hello Community,
I dont understand what is happening here. I am using a line of code to save my workspace - however what happens is the saved workspace doesnt get created, the dialogue box just disappears and nothing is saved. Code as:
[file,path] = uiputfile('*.mat','Save Workspace As');
so when I call this and fill in the filename in the dialogue box - nothing gets saved at all. Variables 'file' and 'path' are created and are added to the workspace, but a copy of all the variables contained in the workspace under a '.mat' file is not created or added to the current parent folder.
Any ideas as to whats going on here?
Regards,
10B.

採用された回答

Star Strider
Star Strider 2015 年 9 月 28 日
編集済み: Star Strider 2015 年 9 月 28 日
From the documentation:
  • Note: Successful execution of uiputfile does not create a file; it only returns the name of a new or existing file that you designate.
Add these lines after the uiputfile call:
pf = fullfile(path, file); % Combines ‘path’ & ‘file’
save(pf); % Saves Workspace
(I did not test this code, but it should work.)
  7 件のコメント
Image Analyst
Image Analyst 2015 年 9 月 28 日
Well unless you have a backup copy of the code, I think it will remain a mystery. I really think that the code must be different between the two because otherwise it should work the same. I see no reason why it should work fine, and then without having made any changes whatsoever, suddenly quit working.
Each time you enter a new function you are in a new scope, and this new scope has a different workspace. There is not just one workspace - there are lots that come into existence and vanish as you enter and leave functions. Each function has it's own scope, and then there is the base workspace. If you're in a script, then you can see a special workspace called "the base workspace", but once you enter a function, you are in the scope of that function and you see that only that function's workspace - no others. You don't see the base workspace any longer unless you make some special function calls to let you see it. But if you just call save() from inside a function, you will save that functions collection of private variables, not the variables in the workspace of the thing that called the function (which may be the base workspace if you called it from a script, or the parent function's workspace if you called the function from another function. There are some cases where a child function can see the parent/calling function's variables and you can look into that if you want.
Does that explain it better? Actually it's much like any other programming language in that respect.
10B
10B 2015 年 9 月 28 日
Hello Image Analyst,
Yes, thanks for the explanation. I hadn't thought of that as a process - but it makes sense.
I had made changes to the script yes, but not in a way that effected this part of the code - or at least so I thought!
Unfortunately, I overwrote the code so I can't go back to confirm the changes, but there you go, another lesson learnt for next time.
Regards,
10B.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMigrate GUIDE Apps についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by