Error loading matlabprefs.mat

84 ビュー (過去 30 日間)
Andreas Schwager
Andreas Schwager 2021 年 6 月 18 日
コメント済み: Andreas Schwager 2021 年 6 月 25 日
Hallo,
there is an error:
MATLAB:load:notBinaryFile
Unable to read MAT-file /home/myUser/.matlab/R2021a/matlabprefs.mat. Not a binary MAT-file. Try load -ASCII to read as text.
sometimes (this is not reproducible) it pops up after rebooting Matlab:
Warning: Initializing MATLAB Graphics failed.
This indicates a potentially serious problem in your MATLAB setup, which should be resolved as soon as possible. Error detected was:
MATLAB:load:unableToReadMatFile
Unable to read MAT-file /home/myUser/.matlab/R2021a/matlabprefs.mat. File might be corrupt.
> In hgrc (line 163)
In matlab.graphics.internal.initialize (line 15)
Some pages (e.g. https://www.mathworks.com/matlabcentral/answers/364986-matlab-error-graphic) recommend deleting matlabprefs.mat. However, if I do, the error pops up again.
I also deleted full ~/.matlab folder. The error was gone for a couple of hours. Now, it reappears.
Does anybody know a persistent solution?
Thanks
  6 件のコメント
Andreas Schwager
Andreas Schwager 2021 年 6 月 18 日
編集済み: Andreas Schwager 2021 年 6 月 18 日
file ~/.matlab/R2021a/matlabprefs.mat
~/.matlab/R2021a/matlabprefs.mat: Matlab v5 mat-file (little endian) version 0x0100
Walter Roberson
Walter Roberson 2021 年 6 月 18 日
That looks okay at the moment. At a time that MATLAB is telling you the file is corrupt, could you attach the file here for us to look at?
(Note: I am not completely sure where MATLAB stores github keys, or login credentials to reach your Mathworks account, and it is plausible they might be stored in that file, so there is some degree of security risk; I do not know if they are stored in that file or not, or how they might be encoded.)

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

採用された回答

Jan
Jan 2021 年 6 月 19 日
編集済み: Jan 2021 年 6 月 25 日
If removing the file helps for some time, a function is destroying the file. Then an approach is to scan, who is accessi ng the file. Shadow the builtin save() function by adding this in a folder ontop of the path:
function save(varargin)
file = varargin{1};
if contains(file, 'matlabprefs', 'IgnoreCase', true) % [EDITED, Typo fixed]
disp(dbstack)
end
str =
evalin('caller', ['builtin(''save''', strjoin(varargin{:}, ',')]);
end
Does this work?! The strange calling syntax of the save() command, which takes char vectors as input to access the contents of the corresponding variables, is hard.
  8 件のコメント
Jan
Jan 2021 年 6 月 25 日
@Andreas Schwager: This is the purpose of the code I've posted: Preventing SAVE to access the preferences file or to track, who is corrupting it.
Andreas Schwager
Andreas Schwager 2021 年 6 月 25 日
Dear Jan,
yes, I do not know when or why, however Matlab requires me to validate the local PCT cluster. This fails, if save is prevented. So, in the long term, there must be any better solution.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeData Type Identification についてさらに検索

製品


リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by