#matlab
#matlab
Вопрос:
Я надеюсь, что кто-нибудь может помочь мне решить следующую проблему кодирования.
Когда я выполняю оптимизацию, которая представляет собой минимизацию по методу наименьших квадратов: Sum(y(modeled)-y(True))^2
, я хочу строить графики после каждой итерации при выполнении оптимизации. Для графиков я хочу изобразить на одном рисунке следующим образом:
- ИСТИННЫЙ y (синяя линия)
- МОДЕЛИРУЕМЫЙ y вычисляется на каждой итерации. СМОДЕЛИРОВАННЫЙ y, полученный на каждой итерации, должен быть разных цветов, не используйте один и тот же цвет
Однако существует трудность, заключающаяся в том, что я не знаю количество итераций, которые может выполнить программа, это может быть несколько итераций для простой функции или огромные итерации для сложной функции.
Как написать соответствующие коды в matlab?
Я искал, что я могу использовать PlotFcn
, чтобы помочь мне строить графики. Но я не думаю, что это полезно, поскольку графики по умолчанию не отображают графики, которые я хочу, что заставляет меня писать коды самостоятельно. Я использую OutputFcn
вместо этого. Если возможно выполнить ту же задачу, используя PlotFcn
, пожалуйста, дайте мне знать. Спасибо за помощь.
Комментарии:
1. Если вы просто хотите построить несколько кривых на одном рисунке, просто используйте
hold on
. Вы также можете содержать несколько фигур.figure(1), plot(...), hold on;
а затем второй рисунокfigure(2), plot(...), hold on;
. Затем вы можете снова построить график на рисунке 1, используя первую команду. Цвета будут автоматически вращаться на удерживаемых фигурах.
Ответ №1:
Вы можете сделать:
plot(trueY,'b');
hold on;
while(~finished)
%....generate a modeledY
plot(modeledY, 'Color', random(1,3));
%....determine if finished
end
Это не позволяет вам контролировать цвет, который у вас будет, но позволяет вам делать столько, сколько вы хотите. Если вы хотите управлять цветом, проверьте это.
Комментарии:
1. Мне не нужно контролировать цвет, я хочу, чтобы цвет был другим, когда я строю разные кривые без повторения.