Как сделать так, чтобы Matlab включал все измерения выражения, когда выдается ошибка, потому что размеры не совпадают? - PullRequest
4 голосов
/ 09 июля 2010

Итак, я отлаживаю некоторый код Matlab и получаю ошибку измерения-не-согласен-для некоторых выражений.Хорошо, что Matlab указывает на правильную строку и т. Д. Однако было бы неплохо, если бы Matlab выводил размеры переменных, включенных в текст ошибки, так что мне не пришлось бы самостоятельно определять их размер.Иногда для длинного выражения глубоко в цикле for очень сложно выяснить, что именно представляют собой все измерения.

Так есть ли настройка или хак для этого?

Ответы [ 2 ]

7 голосов
/ 09 июля 2010

Самый простой способ решить эту проблему - набрать dbstop if error в командном окне, а затем запустить код.Затем MATLAB остановит выполнение прямо перед тем, как выдаст ошибку, и откроет редактор в строке, где будет выдана ошибка.Затем вы можете проверить размеры массивов на досуге и даже в командной строке попробовать возможные исправления, поскольку у вас будет доступ ко всем переменным, которые в данный момент активны в коде.

2 голосов
/ 09 июля 2010

Вы можете попробовать блок try-catch-end.

* 1006 Е.Г. *

try
    %# Some error prone code
    a = getA(b);
catch err_msg
    %# Display any information you want 
    disp(size(b));
    %# Display the error message
    disp(err_msg.identifier);
    disp(err_msg.message);
end 

Вы также можете добавить точку останова в блоке catch, если хотите сами что-то оценить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...