В ответ на this questionMathWorks Support Team утверждает, что:Перегрузка! (Взрыва) оператор
It is also possible to overload the ! (bang) operator by creating a file called "!.m" and having this file be before the directory $MATLABROOT\toolbox\matlab\general in the MATLAB search path.
Я попробовал это, и это не похоже на работу. Я запускаю Matlab 9.1.0.441655 (R2016b) на Монетный двор Linux. Мой путь выглядит следующим образом:
/home/raphael/Programs/Test
/usr/local/MATLAB/R2016b/toolbox/matlab/iofun
...
/usr/local/MATLAB/R2016b/toolbox/matlab/general
...
и я создал файл !.m
в /home/raphael/Programs/Test
. Независимо от того, что я помещаю в этот файл, в редакторе появляется сообщение об ошибке:
Line 1: Unable to run code analysis. '/home/raphael/Programs/Test/!.m' is an invalid file name.
Как есть! (bang) не указан в Operators and associated function list, непонятно, что помещать в файл !.m
.
я все-таки попытался поставить код:
function bang(c)
disp(c)
но хотя which !
возвращает мой пользовательский путь файла, Matlab неизменно вызывает встроенный оператор:
>> which !
/home/raphael/Programs/Test/!.m
>> !pwd
/home/raphael/Programs/Test
переименовав файл bang.m
разрешает ошибку, но не влияет на оператор bang.
Итак:
- ли поведение MatLab изменилось с тех пор R2012?
- Как можно перегрузить! (bang)?
- И если это действительно возможно, каков должен быть синтаксис объявления функции?
Великий ответ, спасибо! – Ratbert