Как в цикле провести итерации матриц, а не их элементов СРОЧНО НУЖНО

Форум, посвященный общим вопросам, связанным с MATLAB

Модератор: Admin

Altynbek
Пользователь
Сообщения: 1
Зарегистрирован: Вт мар 27, 2018 10:48 am

Как в цикле провести итерации матриц, а не их элементов СРОЧНО НУЖНО

Сообщение Altynbek » Вс июн 24, 2018 2:03 pm

Проблема в том что нужно провести итерации по матрицам.

[fname,pname] = uigetfile('D:\MATL\QED.txt','Открыть файл');
name = [pname fname];
b = load(name);
N = length(b);
dvs = length(b(1,:));
g = (b(1:N, 2:dvs))';
dvst = dvs - 1;
int = 1;
hint = int / dvst;
x=hint:hint:int;
[fname,pname] = uigetfile('D:\MATL\33.txt','Открыть файл');
name = [pname fname];
b1 = dlmread(name);
dvs1 = length(b1(1,:));
g1 = (b1(1:N, 2:dvs1))';
dvst1 = dvs1 - 1;
hint1 = int / dvst1;
x1=hint1:hint1:int;
n = 7;m = 4;
k = 1;
p = figure;
grid
for i=1:N
clc;
y = g(:,i);
r = g1(:,i);

A = [1 0.142857143 0.0204081633 0.00291545;
1 0.285714286 0.0816326532 0.023323615;
1 0.428571429 0.1836734697 0.078717201;
1 0.571428572 0.3265306128 0.186588921;
1 0.714285715 0.5102040826 0.364431487;
1 0.857142858 0.7346938790 0.629737611;
1 1 1 1 ];
At = A';
AtA = At*A;

U1 = inv(AtA) * At*y1; % сама итерация начинается отсюда
ytr1 = (U(k)(1)+U(k)(2)*x+U(k)(3)*x.^2+U(k)(4)*x.^3)';
sig(k) = (sum((ytr(k)-y(t)).^2))/(n-m); %расчёт первой дисперсии
oblp = ytr(1)+(h *sig(k)^0.5); %доверительный интервал
oblm = ytr(1)-(h *sig(k)^0.5);
I(k) = abs(y(t)-ytr(k));
I1(k) = y(k)-ytr(k);
for j=1:n
if I(j) <= (h *sig(k)^0.5) %I0
y1(j,1) = y(j);
elseif I1(j) > (h *sig(k)^0.5) %I+
y1(j,1) = ytr(j) + (h *sig(k)^0.5);
else I1(j) < -(h *sig(k)^0.5) %I-
y1(j,1) = ytr(j) - (h *sig(k)^0.5);
end
end

U2 = inv(AtA) * At*y1;
U21 = U2(1);
U22 = U2(2);
U23 = U2(3);
U24 = U2(4);
ytr2 = (U(к)(1) + U(к)(2)*x + U(к)(3)*x.^2 + U(к)(4)*x.^3)';
s2 = sum((ytr2-y1).^2); %2 itter
sig2 = s2/(n-m);
h2 = k*sig2^0.5;
I2 = abs(y1-ytr2);
I21 = y1-ytr2;
for j=1:n
if I2(j,1) <= h2
y2(j,1) = y1(j,1);
elseif I21(j,1) > h2
y2(j,1) = ytr2(j,1) + h2;
else I21(j,1) < -h2
y2(j,1) = ytr2(j,1) - h2;
end
% y31(j,1) = v(j,1) * y11(j,1);
end

U3 = inv(AtA) * At*y2;
U31 = U3(1);
U32 = U3(2);
U33 = U3(3);
U34 = U3(4);
ytr3 = (U31 + U32*x + U33*x.^2 + U34*x.^3)';

s3 = sum((ytr3-y2).^2); %3 iter
sig3 = s3/(n-m);
h3 = k*sig3^0.5;
I3 = abs(y2-ytr3);
I32 = y2-ytr3;
for j=1:n
if I3(j,1) <= h3
y3(j,1) = y2(j,1);

elseif I32(j,1) > h3
y3(j,1) = ytr3(j,1) + h3;

else I32(j,1) < -h3
y3(j,1) = ytr3(j,1) - h3;

end
% y51(j,1) = v(j,1) * y3(j,1);
end
U4=inv(AtA) * At*y3;
U41 = U4(1);
U42 = U4(2);
U43 = U4(3);
U44 = U4(4);
ytr4 = (U41 + U42*x + U43*x.^2 + U44*x.^3)';