Bug about saving a variable

조회 수: 3 (최근 30일)
Isaac
Isaac 2011년 12월 19일
Hello everybody,
i am experiencing a very strange bug in saving a variable.
Supposing variable name is "xxxxx"
if i execute the instruction
save filetarget xxxxx (which should save the xxxxx variable in the filetarget.mat file)
and then i execute
load filetarget
i receive the following error message: Error using ==>load Unable to read MAT-file C:\....filetarget.mat File may be corrupt
but if i create a variable with a shorter name, that is
x=xxxxx
and then i execute save filetarget x and then load filetarget
everything works...
what can it be??
Thanks in advice!!!!
  댓글 수: 2
Daniel Shub
Daniel Shub 2011년 12월 19일
It works fine on my system. Are your variables really only 5 characters long?
Walter Roberson
Walter Roberson 2011년 12월 19일
Could you show us the actual variable name you are having problems with?
Which MATLAB version are you using, and which MS Windows version?

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

답변 (3개)

Naz
Naz 2011년 12월 19일
x=2;
yourfile='name.mat'; %saves in the current directory
save yourfile x
load yourfile
Strange... I don't get an error when using variable xxxxx. Maybe matlab has an issue with the path where you want to save it? Try saving it in the current directory first.
Try using this set:
save(yourfile, 'xxxxx');
new=load(yourfile);
where the 'new' variable will be a struct containing your variable xxxxx. To access it, you need this reference:
newVarible=new.xxxxx;
  댓글 수: 4
Naz
Naz 2011년 12월 19일
In the code above, the variable 'x' is in the file 'name'.
Walter Roberson
Walter Roberson 2011년 12월 19일
I'm pretty sure that is not true, Naz.
save yourfile x
is taking advantage of command / function duality such as is described briefly by Steve at http://www.mathworks.com/matlabcentral/newsreader/view_thread/51623
save yourfile x
would be treated as
save('yourfile','x')
which would save to the file named yourfile.mat
If you examine the save() documentation at http://www.mathworks.com/help/techdoc/ref/save.html you will see that in each case where command/function duality is used, the filename given is treated literally rather than being evaluated. For example "save test.mat" does not attempt to extract the field named "mat" from the structure variable "test" and use the value of the field as the file name.

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


Jose Jeremias Caballero
Jose Jeremias Caballero 2011년 12월 19일
Hello.
>> xxxxxxx=rand(3);
>> save filetarget xxxxxxx
>> clear all
>> whos
>> load filetarget
>> whos
Name Size Bytes Class Attributes
xxxxxxx 3x3 72 double
>> display(xxxxxxx)
xxxxxxx =
0.4898 0.7094 0.6797
0.4456 0.7547 0.6551
0.6463 0.2760 0.1626

Isaac
Isaac 2011년 12월 20일
I explained myself in a wrong way. The problem is not "usual": saving and loaind usually works well with me, whatever is the name and its length of the variable.
The problem is about one specific variabile... which i dunno why if i save it and then load it .... it tells me that error message "Error using ==>load Unable to read MAT-file C:\....filetarget.mat File may be corrupt" but, more surprisingly, if i save it with another name... it works!!!!
that is:
variable "var1"
save filetarget var1 load filetarget ERROR
BUT:
var2=var1 save filetaget var2 load filetarget
Everything works....
WHYYY :D
  댓글 수: 6
Jan
Jan 2011년 12월 20일
Please post running code and format it as explained in the "Markup help"link on this page.
Jan
Jan 2011년 12월 20일
Are you sure, that this is not working:
var1 = rand(10);
save filetarget var1
Data = load('filetarget.mat');

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

카테고리

Help CenterFile Exchange에서 Whos에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by