我是靠谱客的博主 自觉水池,最近开发中收集的这篇文章主要介绍Matlab使用中遇到的一些脑残问题。1. 点击Figure并移动时,返回命令窗口。2. R2018版本双击.m文件打开另外一个新的程序。,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
1. 点击Figure并移动时,返回命令窗口。
原因: 安装了第三方识别鼠标动作的软件,例如QTranslator。
2. R2018版本双击.m文件打开另外一个新的程序。
原因:默认启动文件类型选成了 MATLAB Starter Application。实际应该为 MATLAB 2018b (你的版本)。
如果选择默认启动的界面没有matlab,需要重新将matlab在本机注册表里重新。此处通过weixin_42349751的博客找到了解决办法。
方法为在matlab界面运行如下代码后(需要管理员权限),会在当前目录生成注册表文件,运行即可。以下是该代码的license。
Copyright (c) 2015, Patrik Forssén
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the distribution
* Neither the name of the Karlstad University nor the names
of its contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
干货:
function associateFiles(action, userExtList, fileStr)
% associateFiles(action, extList, fileStr)
%
% Makes a registry files that can be used to set correct file associantions on
% a windows platform. The following MATLAB file extensions are supported:
% .m, .mat, .fig, .mexw32, .mexw64, .p, .mdl, .mdlp, .slx, .mldatx, .req,
% .sldd, .slddc, .slxp, .sltx, .mn, .mu, .muphlp, .xvc, .xvz, .ssc, .mlapp,
% .mlappinstall, .mltbx, .mlpkginstall, .mlprj
%
% INPUT:
% action - optional string.
% * 'add' (default) adds/rewrites the MATLAB file association registry
% keys for this version.
% * 'delete' deletes the MATLAB file association registry entries for
% ALL versions of MATLAB (including "old style" ones)
% * 'deleteadd' is the same as 'delete' followed by 'add'
% extList - optional string or cell array of strings containing the file
% extensions that should be associated with this version. Default is
% all MATLAB file extension (see above).
% fileStr - optional string with the name of the registry file to be written
% (possibly including path). Default is the file
% 'MatlabFileAssocFix.reg' in the current directory.
%
% USAGE:
% 1) Run with desired options (see above). A registry file should have been
% created.
% 2) Exit all running instances of MATLAB.
% 3) Make a backup copy of the windows registry if you need to restore the
% changes, see https://support.microsoft.com/en-us/kb/322756
% 4) Double click on the created file (possibly need to enter a password) and
% confirm.
% 5) Restart Windows (or explorer.exe).
% 6) The MATLAB files should now be associated with the MATLAB version that the
% registry file was created in and e.g. m-files should be opened in an
% already running instance of MATLAB.
%
% EXAMPLES:
% * associateFiles('deleteadd') - Makes a registry files that deletes all
% previous MATLAB file association registry keys and write new ones that
% associates all MATLAB files with the MATLAB version that the registry file
% was created in.
% * associateFiles('', {'.m', '.mat', '.fig'}, 'myFile') - Makes a registry file
% "myFile.reg" that associates m-, mat- and fig-files with the MATLAB version
% that the registry file was created in.
%
% VERSION 1.0
% Defualt input
if (nargin < 1 || isempty(action))
action = 'add';
end
if (nargin < 2)
userExtList = {};
end
if (nargin < 3)
fileStr = '';
end
if (~iscell(userExtList))
if (isempty(userExtList))
userExtList = {};
else
userExtList = {userExtList};
end
end
% Sanity check
if (~ischar(action) || (~strcmpi(action, 'add') && ...
~strcmpi(action, 'delete') && ~strcmpi(action, 'deleteadd')))
error('The action to perform must be ''add'', ''delete'' or ''deleteadd''!')
end
if (~isempty(userExtList) && ~min(cellfun(@ischar, userExtList)))
error('The file extension list must be a string or a cell array of strings!')
end
if (~ischar(fileStr))
error('The file to write to must be a string!')
end
% Get the currently running MATLAB version
verStr = regexp(version, '(d*?.d*?.d*?).', 'tokens');
verStr = verStr{1}{1};
verNum = str2double(regexprep(verStr, '(d*?.d*)[x0000-xffff]*', '$1'));
verHex = sprintf('%04x', str2double(regexprep(verStr, ...
'(d*?).[x0000-xffff]*', '$1')), str2double(regexprep(verStr, ...
'd*?.(d*?).[x0000-xffff]*', '$1')));
% Get 32/64-bit
arch = computer;
switch arch
case 'PCWIN'
binFolder = 'win32';
case 'PCWIN64'
binFolder = 'win64';
end
binPath = fullfile(matlabroot, 'bin', binFolder);
% Known MATLAB files with possible DDE actions
fileExtCell = {...
'fig' , 'MATLAB Figure' , '-62' , ...
{'Open', 'uiopen(''%1'',1)'} , [] ; ...
'm' , 'MATLAB Code' , '-58' , ...
{'Open', 'uiopen(''%1'',1)'} , {'Run', 'run(''%1'')'} ; ...
'mat' , 'MATLAB Data' , '-59' , ...
{'Load', 'load(''%1'')' } , {'Open', 'uiimport(''%1'')'}; ...
'mdl' , 'Simulink Model' , '-61' , ...
{'Load', 'uiopen(''%1'',1)'} , [] ; ...
'mdlp' , 'Simulink Protected Model' , '-72' , ...
[] , [] ; ...
'mexw32', 'MATLAB MEX' , '-63' , ...
[] , [] ; ...
'mexw64', 'MATLAB MEX' , '-63' , ...
[] , [] ; ...
'mn' , 'MuPAD Notebook' , '-66' , ...
{'Open', 'mupad(''%1'')'} , [] ; ...
'mu' , 'MuPAD Code' , '-67' , ...
{'Open', 'uiopen(''%1'',1)'} , [] ; ...
'muphlp', 'MuPAD Help' , '-68' , ...
{'Open', 'doc(symengine, ''%1'')'} , [] ; ...
'p' , 'MATLAB P-code' , '-60' , ...
[] , [] ; ...
'slx' , 'Simulink Model (SLX format)', '-73' , ...
{'Open', 'uiopen(''%1'',1)'} , [] ; ...
'ssc' , 'Simscape Model' , '-65' , ...
{'Open', 'uiopen(''%1'',1)'} , [] ; ...
'xvc' , 'MuPAD Graphics' , '-69' , ...
{'Open', 'mupad(''%1'')'} , [] ; ...
'xvz' , 'MuPAD Graphics' , '-70' , ...
{'Open', 'mupad(''%1'')'} , [] ; ...
'mlapp' , 'MATLAB Application' , [] , [], [] ; ...
'mltbx' , 'MATLAB Toolbox' , [] , [], [] ; ...
'mldatx' , 'Simulink Scenario' , [] , [], [] ; ...
'req' , 'Simulink Requirements Link' , [] , [], [] ; ...
'sldd' , 'Simulink Dictionary' , [] , [], [] ; ...
'slddc' , 'Simulink Dictionary' , [] , [], [] ; ...
'mlappinstall', 'MATLAB Application' , [] , [], [] ; ...
'mlpkginstall', 'MATLAB Support Package' , [] , [], [] ; ...
'slxp' , 'Simulink Protected Model Package', [] , [], [] ; ...
'sltx' , 'Simulink Template' , [] , [], [] ; ...
'mlprj' , 'MATLAB Project' , [] , [], []};
% Possibly trim list
if (~isempty(userExtList))
fileExtCell = fileExtCell(ismember(fileExtCell(:, 1), ...
regexprep(userExtList, '.', '')), :);
end
% Make registry file
if (~isempty(fileStr))
% Possibly add file extension
[~, ~, tmp] = fileparts(fileStr);
if (isempty(tmp))
fileStr = [fileStr, '.reg'];
end
fid = fopen(fileStr, 'w');
else
fid = fopen('MatlabFileAssocFix.reg', 'w');
end
if (fid == -1)
error('Failed to create registry file')
end
% Write intial lines
fprintf(fid, '%srnrn', 'Windows Registry Editor Version 5.00');
fprintf(fid, '%srnrn', ';FIXES MATLAB FILE ASSOCIATIONS');
% REMOVE OLD KEYS
explorerKey = ['HKEY_CURRENT_USERSoftwareMicrosoftWindows', ...
'CurrentVersionExplorerFileExts'];
% Iterate over file extensions
for fileExtNo = 1 : size(fileExtCell, 1)
rmKeys = {};
fileExt = fileExtCell{fileExtNo, 1};
% File extension keys
[status, result] = dos(['reg query HKEY_CLASSES_ROOT /f .', fileExt, ...
' /k /e']);
if (~status)
keys = regexp(result, '(HKEY_CLASSES_ROOT[x0000-xffff]*?)n', 'tokens');
rmKeys = [rmKeys, keys{:}];
end
% Old style keys without version numbers
if (~strcmpi(fileExt, 'mexw64'))
% Uses single DDE key for mex files
if (strcmpi(fileExt, 'mexw32'))
fileExtTmp = 'mex';
else
fileExtTmp = fileExt;
end
[status, result] = dos(['reg query HKEY_CLASSES_ROOT /f ', ...
fileExtTmp, 'file /k /e']);
if (~status)
keys = regexp(result, '(HKEY_CLASSES_ROOT[x0000-xffff]*?)n', ...
'tokens');
rmKeys = [rmKeys, keys{:}];
end
end
% New style keys with version number
if (strcmpi(action, 'add'))
% Only remove keys related to this version
[status, result] = dos(['reg query HKEY_CLASSES_ROOT /f MATLAB.', ...
fileExt, '.', verStr ' /k']);
else
% Remove keys related to ALL version
[status, result] = dos(['reg query HKEY_CLASSES_ROOT /f MATLAB.', ...
fileExt, '. /k']);
end
if (~status)
keys = regexp(result, '(HKEY_CLASSES_ROOT[x0000-xffff]*?)n', 'tokens');
rmKeys = [rmKeys, keys{:}];
end
% Explorer keys
[status, result] = dos(['reg query ', explorerKey, ' /f .', fileExt, ...
' /k /e']);
if (~status)
keys = regexp(result, '(HKEY_CURRENT_USER[x0000-xffff]*?)n', 'tokens');
rmKeys = [rmKeys, keys{:}];
end
% Write to file
if (~isempty(rmKeys))
fprintf(fid, '%srnrn', [';REMOVES ', upper(fileExt), ...
' FILE ASSOCIATIONS']);
for keyNo = 1 : length(rmKeys)
key = rmKeys{keyNo};
fprintf(fid, '%srnrn', ['[-', key, ']']);
end
end
end
% ADD KEYS
if (~strcmpi(action, 'delete'))
% Get text Persistent Handler
[status, result] = dos(...
'reg query HKEY_CLASSES_ROOT.txtPersistentHandler /ve');
if (~status)
PersistentHandler = regexp(result, '{[x0000-xffff]*?}', 'match');
PersistentHandler = PersistentHandler{1};
else
PersistentHandler = '';
end
% DDE call
ddeCall = 'ShellVerbs.Matlab';
if (verNum > 8)
% Changed from R2013a
ddeCall = [ddeCall, '.', verStr];
end
% Default icon
defIcon = 'm';
if (~exist(fullfile(binPath, 'm.ico'), 'file'))
defIcon = '';
end
% Path to MATLAB binary directory with \
binPathStr = regexprep(binPath, '\', '\\');
% Write Shell Open key
key = ['[HKEY_CLASSES_ROOTApplicationsMATLAB.exeshellopen', ...
'command]%r', '@=""', binPathStr, '\MATLAB.exe" "%1""%r%r'];
fprintf(fid, '%srnrn', ';ADD SHELL OPEN');
lines = regexp(key, '([x0000-xffff]*?)%r', 'tokens');
for lineNo = 1 : length(lines)
fprintf(fid, '%srn', lines{lineNo}{1});
end
% Iterate over file types
for fileExtNo = 1 : size(fileExtCell, 1)
fileExt = fileExtCell{fileExtNo, 1};
% File extension keys
key = ['[HKEY_CLASSES_ROOT.', fileExt, ']%r@="MATLAB.', fileExt, '.', ...
verStr, '"%r'];
if (strcmpi(fileExt, 'm') && ~isempty(PersistentHandler))
% Add some values
key = [key, '"Content Type"="text/plain"%r', ...
'"PerceivedType"="Text"%r'];
end
key = [key, '%r'];
key = [key, '[HKEY_CLASSES_ROOT.', fileExt, ...
'OpenWithProgids]%r"MATLAB.', fileExt, '.', verStr, '"=""%r%r'];
if (strcmpi(fileExt, 'm') && ~isempty(PersistentHandler))
key = [key, '[HKEY_CLASSES_ROOT.', fileExt, ...
'PersistentHandler]%r@="', PersistentHandler, '"%r%r'];
end
key = [key, '[HKEY_CLASSES_ROOT.', fileExt, ...
'VersionsMATLAB.', fileExt, '.' verStr, ']%r"FileVersionMS"=dword:', ...
verHex, '%r"FileVersionLS"=dword:00000000%r%r'];
% DDE keys
ddeData = fileExtCell(ismember(fileExtCell(:, 1), fileExt), :);
key = [key, '[HKEY_CLASSES_ROOTMATLAB.', fileExt, '.' verStr, ...
']%r@="', ddeData{2}, '"%r'];
if (~isempty(ddeData{3}))
key = [key, '"FriendlyTypeName"="@', binPathStr, '\matlab.exe', ...
',', ddeData{3}, '"%r'];
end
key = [key, '%r'];
% Icon
icon = fileExt;
if (~exist(fullfile(binPath, [icon, '.ico']), 'file'))
icon = defIcon;
end
if (~isempty(icon))
key = [key, '[HKEY_CLASSES_ROOTMATLAB.', fileExt, '.' verStr, ...
'DefaultIcon]%r@="', binPathStr, '\', icon, '.ico,0"%r%r'];
end
% Shell actions
for shellActionNo = 4:5
ddePar = ddeData{shellActionNo};
if (~isempty(ddePar))
key = [key, '[HKEY_CLASSES_ROOTMATLAB.', fileExt, '.' verStr, ...
'Shell', ddePar{1}, ']%r@="', ddePar{1}, '"%r%r'];
key = [key, '[HKEY_CLASSES_ROOTMATLAB.', fileExt, '.' verStr, ...
'Shell', ddePar{1}, 'command]%r@=""', binPathStr, ...
'\matlab.exe""%r%r'];
key = [key, '[HKEY_CLASSES_ROOTMATLAB.', fileExt, '.' verStr, ...
'Shell', ddePar{1}, 'ddeexec]%r@="', ddePar{2}, '"%r%r'];
key = [key, '[HKEY_CLASSES_ROOTMATLAB.', fileExt, '.' verStr, ...
'Shell', ddePar{1},'ddeexecapplication]%r@="', ...
ddeCall, '"%r%r'];
key = [key, '[HKEY_CLASSES_ROOTMATLAB.', fileExt, '.' verStr, ...
'Shell', ddePar{1},'ddeexectopic]%r@="system"%r%r'];
end
end
% Explorer keys
key = [key, '[', explorerKey, '.', fileExt, 'OpenWithProgids]%r'];
if (strcmpi(fileExt, 'm'))
key = [key, '"m_auto_file"=hex(0):%r'];
end
key = [key, '"MATLAB.', fileExt, '.', verStr, '"=hex(0):%r%r'];
if (~isempty(ddeData{4}))
% Add key
key = [key, '[', explorerKey, '.', fileExt, ...
'OpenWithList]%r"a"="MATLAB.exe"%r"MRUList"="a"%r%r'];
else
key = [key, '[', explorerKey, '.', fileExt, 'OpenWithList]%r%r'];
end
% Write to file
fprintf(fid, '%srnrn', [';ADD ', upper(fileExt), ...
' FILE ASSOCIATIONS']);
lines = regexp(key, '([x0000-xffff]*?)%r', 'tokens');
for lineNo = 1 : length(lines)
fprintf(fid, '%srn', lines{lineNo}{1});
end
end
end
% Cloese file
fclose(fid);
最后
以上就是自觉水池为你收集整理的Matlab使用中遇到的一些脑残问题。1. 点击Figure并移动时,返回命令窗口。2. R2018版本双击.m文件打开另外一个新的程序。的全部内容,希望文章能够帮你解决Matlab使用中遇到的一些脑残问题。1. 点击Figure并移动时,返回命令窗口。2. R2018版本双击.m文件打开另外一个新的程序。所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复