Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/113: Рейтинг темы: голосов - 113, средняя оценка - 4.53
10 / 10 / 5
Регистрация: 04.07.2009
Сообщений: 112
1

Inner matrix dimensions must agree.

10.04.2011, 12:39. Показов 21020. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Есть программка с нейросетью, но при прохождении по 3 слою вылетает ошибка:
Код
y1 = logsig(net.IW{1}*p + net.b{1}); %1-й слой
 
y2 = logsig(net.LW{2}*y1 + net.b{2}); %2-й слой
 
Y = purelin(net.LW{3}*y2 + net.b{3}); %3-й слой
??? Error using ==> mtimes
Inner matrix dimensions must agree.

Error in ==> RunNN at 18
Y = logsig(net.LW{3}*y2 + net.b{3});


Как согласовать размеры матриц при умножении???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2011, 12:39
Ответы с готовыми решениями:

Inner matrix dimensions must agree
Текст программы: function = inmnlag( x,y ) n=numel(x); % число элементов в X l=1; L=0; den=1;...

Ошибка: Matrix dimensions must agree
h=0.02; y1=dsolve('Dy=-5*y*cos(5*x)+25*sin(10*x)','y(0)=0','x') % рез-т: 10/exp(sin(5*x)) +...

Ошибка: Inner matrix dimensions must agree
Здравствуйте! Вот мой код: >> syms n >> S_inf=symsum(144/(n^2+18*n+80),n,0,inf) S_inf = ...

Error using + Matrix dimensions must agree.
Доброго времени суток! Подскажите, в чем проблема, как исправить? Выскакивает ошибка: Error...

10
2833 / 2130 / 86
Регистрация: 02.05.2010
Сообщений: 3,195
10.04.2011, 12:53 2
Если это поэлементное перемножение матриц одинакового размера, то следует перед знаком умножения поставить точку.
Y = purelin(net.LW{3}.*y2 + net.b{3}); %3-й слой
0
10 / 10 / 5
Регистрация: 04.07.2009
Сообщений: 112
10.04.2011, 13:09  [ТС] 3
Цитата Сообщение от Галина Борисовн Посмотреть сообщение
Если это поэлементное перемножение матриц одинакового размера, то следует перед знаком умножения поставить точку.
Y = purelin(net.LW{3}.*y2 + net.b{3}); %3-й слой
в таком случае следующая ошибка:

??? Error using ==> times
Inner matrix dimensions must agree.

Error in ==> RunNN at 18
Y = purelin(net.LW{3}*y2 + net.b{3});
0
2833 / 2130 / 86
Регистрация: 02.05.2010
Сообщений: 3,195
10.04.2011, 13:28 4
Посмотрите в окне Workspace размеры массивов net.LW{3}, y2, net.b{3}
1
10 / 10 / 5
Регистрация: 04.07.2009
Сообщений: 112
10.04.2011, 13:45  [ТС] 5
y2 - 15x1

вот в чем фишка... в net.LW{3} - ничего нету! хм... а где тогда пропал масив чисел))
ну спасибо, за то что подтолкнули к нахождению ошибки
0
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 15
23.02.2012, 22:40 6
Помогите разобраться с программой:
Не хочет строить и все тут
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
A=[1 0 0];
B=[0.9999; 0.000025; 0.000025; 0.00005];
C1=[1; 0; 0];
C2=[0; 1; 0];
C3=[0; 0; 1];
P1=zeros(1,127);
P2=zeros(1,127);
P3=zeros(1,127);
for k=0:126
    P1(k+1)=(A.*B.^k)*C1;
    P2(k+1)=(A.*B.^k)*C2;
    P3(k+1)=(A.*B.^k)*C3;
end
plot(0:126, P1,'m');
hold on;
plot(0:126, P2,'g');
hold on;
plot(0:126, P3,'r');
grid on;
??? Error using ==> times
Matrix dimensions must agree.
0
2833 / 2130 / 86
Регистрация: 02.05.2010
Сообщений: 3,195
24.02.2012, 11:05 7
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
clear
clc
A=[1 0 0];
B=[0.9999; 0.000025; 0.000025];
C1=[1; 0; 0];
C2=[0; 1; 0];
C3=[0; 0; 1];
P1=zeros(1,127);
P2=zeros(1,127);
P3=zeros(1,127);
for k=0:126
P1(k+1)=(A.*B'.^k)*C1
P2(k+1)=(A.*B'.^k)*C2
P3(k+1)=(A.*B'.^k)*C3
end
plot(0:126, P1,'m');
hold on;
plot(0:126, P2,'g');
hold on;
plot(0:126, P3,'r');
grid on;
1) Вектор В должен иметь тот же размет, что вектор А.
2)Чтобы выполнить умножение А*В пришлось транспонировать вектор В - B'
2
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 15
03.10.2012, 22:50 8
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
clear;
 net = newp ([-2 2; -2 2], 1); % – диапазоны значений входа; количество нейронов в слоях 1;
net.b{1} = 0; %смещение b равное 0
w = [1 -0,8]; % – вектор весов;
 net.IW{1,1};% – вес входа;
p = [[-1; -1] [0; 0] [1; -1] [1; 1]]; % – матрица входа;
 
 t = [1 1 1 0]; % – матрица целей.
a = sim (net, p), e = t-a % – моделирование сети
%расчёт выхода и ошибки на первом шаге настройки.
dw = learnp (w, p, [ ],[ ],[ ],[ ],e,[ ],[ ],[ ]) % – требуемое изменение весов
w = w + dw
 
a =
     1     1     1     1
e =
     0     0     0    -1
dw =
    -1    -1
Не складывает w и dw
Как преобразовать?
0
2833 / 2130 / 86
Регистрация: 02.05.2010
Сообщений: 3,195
03.10.2012, 23:51 9
w = [1 -0,8] Очевидно нужно w = [1 -0.8]
1
0 / 0 / 0
Регистрация: 30.10.2011
Сообщений: 15
03.10.2012, 23:55 10
Спасибо! Давно не пользовалась матлабом, забыла!
0
1 / 1 / 0
Регистрация: 10.06.2014
Сообщений: 22
06.10.2014, 14:18 11
Доброго времени суток, товарищи. У меня та же проблема. Всё вроде бы перепроверил, как написано выше но всё равно выдаёт
Error in ==> pr021014 at 24
E=Cz*(y(:,3).*y(:,3)+l^2*y(:,5).*y(:,5))/2+Cx*y(:,1).*y(:,1)+Cx*y(:,1).*y(:,5)*Xc/2+Cx*Xc^2*y(:,5).*y(:,5)/2+I/2*y(:,6).*y(:,6)+M/2*y(:,4).*y(:,4)+M/2*y(:,2).*y(:,2)+Cz1*(y(:,3).*y(:,3)-2*l*y(:,3).*y
Добавлено через 18 секунд
исходник
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[t,y]=ode23t('pr130814',[0,10],[0,0,-0.0005,0,0,0]);
omega=200;
Cx=108000;
M=8.9;
Xc=0.09;
l=0.135;
delta=0.0006;
Cz=340700;
if y(:,3)-l*y(:,5)<=delta
    Cz1=0;
else
    Cz1=420900;
end
if y(:,3)+l*y(:,5)<=delta
    Cz2=0;
else
    Cz2=420900;
end
I=0.0285;
Z0=0.1;
m=0.0104;
r=0.06;
P=m*omega^2*r;
E=Cz*(y(:,3).*y(:,3)+l^2*y(:,5).*y(:,5))/2+Cx*y(:,1).*y(:,1)+Cx*y(:,1).*y(:,5)*Xc/2+Cx*Xc^2*y(:,5).*y(:,5)/2+I/2*y(:,6).*y(:,6)+M/2*y(:,4).*y(:,4)+M/2*y(:,2).*y(:,2)+Cz1*(y(:,3).*y(:,3)-2*l*y(:,3).*y(:,5)-2*delta*y(:,3)+l^2*y(:,5).*y(:,5)+2*delta*l*y(:,5)+delta^2)/2+Cz2*(y(:,3).*y(:,3)+2*l*y(:,3).*y(:,5)-2*delta*y(:,3)+l^2*y(:,5).*y(:,5)-2*delta*l*y(:,5)+delta^2)/2+m*Z0^2*omega^2/2+m/2*(y(:,4).*y(:,4)-2*omega*r*sin(omega*t)+y(:,2).*y(:,2)+(omega*r*sin(omega*t))*(omega*r*sin(omega*t))+2*Z0*y(:,4).*y(:,6)+2*omega*r*sin(omega*t)*y(:,2).*y(:,5)+Z0^2*y(:,6).*y(:,6)+2*omega*r*Z0*sin(omega*t)*y(:,6).*y(:,5));
plot(t,E);
Добавлено через 6 минут
верхние мои посты можно удалить. Сам нашёл ошибку. точки нужно было поставить и после sin(omega*t).
0
06.10.2014, 14:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.10.2014, 14:18
Помогаю со студенческими работами здесь

Ошибка: Inner matrix dimensions must agree.
текст проги: N=10000 % число реализаций del=1/2 %...

Error using ==> mtimes Inner matrix dimensions must agree
Всем доброго времени суток. Очень давно не пользовался матлабом и кое-что подзабыл. Необходимо...

Ошибки в функции: Matrix dimensions must agree. Error using .*
Уважаемые Умы, у кого есть время взгляните пожалуйста на выражение, где я не правильно сделала?...

Ошибка ? Error using ==> mldivide Matrix dimensions must agree
% script clc,clear, s=...

Метод простых итераций выдает ошибку: "Matrix dimensions must agree"
эта программа решает матрицу методом простых итераций a=xlsread('Книга1.xls',1,'A1:D4'),...

Ошибка ?Error using minus ==> minus. Matrix dimensions must agree
clear clc N=1000; x = randn(N,1); sort(x); y = randn(N,1); sort(y); subplot(2,1,1)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru