Необходимо исправить код матлаб, выдет следующую ошибку:
"??? Error using ==> mtimes
Inner matrix dimensions must agree.
Error in ==> Untitled3 at 67
x11 = c1 * v;"
Сам код:
clear all;
a11 = 0; % Задание начальных условий
a12 = 1;
a21 = 2;
a22 = 3;
b11 = - 1;
b12 = - 2;
b21 = - 3;
b22 = - 4;
dt = 0.02; % шаг
km = 100; % правая граница
x = zeros(2, km); % начальное обнуление Х
x(1, 1) = 1; % начальные условия
x(2, 1) = -1;
A = [a11,a12; a21,a22];
I = [1,0; 0,1];
for k = 1:km % заполнение управляющих сигналов
kdt(k) = (k - 1) * dt;
u1(k) = k / 200;
u2(k) = 1;
end
for k = 1:km - 1
ub(1) = b11 * u1(k) + b12 * u2(k);
ub(2) = b21 * u1(k) + b22 * u2(k);
x(1, k + 1) = dt * A(1, 1) * x(1, k) + dt * A(1, 2) * x(2, k) + x(1, k) + ub(1);
x(2, k + 1) = dt * A(2, 1) * x(1, k) + dt * A(2, 2) * x(2, k) + x(2, k) + ub(2);
end
k = 1:1:km;
% ========================= Построение графиков
figure('name', 'Управляющие воздействия u1(k*dt), u2(k*dt) '); % открытие окна для графика
plot(kdt, u1(k), kdt, u2(k)); % рисуем график
set(gca, 'YLim', [0 2]);
legend('u1(k*dt)', 'u2(k*dt)');
grid on; % сетка отображается
xlabel('kdt', 'fontname', 'arial', 'fontsize', 21, 'color', [1 1 0]); % подпись Х
ylabel('y', 'fontname', 'arial new', 'fontsize', 23, 'color', [0 1 0]); % подпись Y
figure('name', 'Переходные процессы x1(k*dt), x2(k*dt) '); % открытие окна для графика
plot(kdt, x(1, :), kdt, x(2, :)); % рисуем график
legend('x1(k*dt)', 'x2(k*dt)');
grid on; % сетка отображается
xlabel('kdt', 'fontname', 'arial', 'fontsize', 21, 'color', [1 1 0]); % подпись Х
ylabel('y', 'fontname', 'arial new', 'fontsize', 23, 'color', [0 1 0]); % подпись Y
% =========================================== Метод МНК
% Формируем необходимые векторы
for k = 1:km - 1
dx(1, k) = (x(1, k + 1) - x(1, k)) / dt;
dx(1, km) = 0;
dx(2, k) = (x(2, k + 1) - x(2, k)) / dt;
dx(2, km) = 0;
du(1, k) = (u1(k + 1) - u1(k)) / dt;
du(1, km) = 0;
du(2, k) = (u2(k + 1) - u2(k)) / dt;
du(2, km) = 0;
end
vt = [dx(1, :), x(1, :), du(1, :), u1, du(2, :), u2];
v = vt';
F = vt * v;
b = v * x(1, :);
c1 = inv(F) * b;
% Матрица для проверки
c = [(a11 + a22) / a12, (a12 * a21 - a11 * a22) / a12, b11 / a12, (a22 * b11 - b21 * a12) / a12, b12 / a12, (a12 * b22 - b12 * a22) / a12];
disp('Матрица для проверки');
disp(c);
disp('Оценочные значения параметров');
disp(c1);
% сравнение графиков модельного выходного сигнала и оценки выходного сигнала, восстановленной по схеме МНК
x11 = c1 * v;
Otkl = 0;
for k = 1:km
Otkl = Otkl + (x(1, k) - x11(k))^2 / (x(1, k))^2;
end
Otkl
| Гарантия на работу | 1 год |
| Средний балл | 4.52 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |