Struggling with array dot operator

I've initialized
t = 0:0.1:20;
L = zeros(4,4,length(t));
I'm trying to assign values to L as follows:
t=0:0.1:20;
for i =1:length(t),
L(:,:,i) = D*diag([(t.^2+1).^2*(sin(t).^2), (t.^2+1).^2*(sin(2*t).^2), (t.^2+1).^2*(sin(3*t).^2), (t.^2+1).^2*(sin(4*t).^2), (t.^2+1).^2*(sin(5*t).^2)])*D';
end
D is a constant matrix. Essentially, there is a different L for each time instant. When I execute this, it gives
Error using *
Inner matrix dimensions must agree.
I'm tried so many combinations of the dot operators since this is a long operation.
Can someone help identify the problem?
Thanks a lot.

 Respuesta aceptada

Matt J
Matt J el 17 de Dic. de 2017
Editada: Matt J el 17 de Dic. de 2017
Define the t-data before the for loop
T=0:0.1:20;
for i =1:length(T),
t=T(i);
L(:,:,i) = D*diag([(t.^2+1).*(t.^2+1).*(sin(t).^2) (t.^2+1).*(t.^2+1).*
(sin(2*t).^2) (t.^2+1).*(t.^2+1).*(sin(3*t).^2) (t.^2+1).*(t.^2+1).*(sin(4*t).^2)
(t.^2+1).*(t.^2+1).*(sin(5*t).^2)])*D';
end
Also, it is a good ideas to use commas to explictly separate entries of a vector/matrix.

4 comentarios

Deepayan Bhadra
Deepayan Bhadra el 17 de Dic. de 2017
Hi Matt, I've made the question more compact but the error persists since it seems not because of 't' definition but rather due to dot array multiplication. Could you check that? Thanks.
Matt J
Matt J el 17 de Dic. de 2017
What are the dimensions of D?
Matt J
Matt J el 17 de Dic. de 2017
Editada: Matt J el 17 de Dic. de 2017
This works for me, if D is 5x5,
T=0:0.1:20;
for i =1:length(T),
t=T(i);
L(:,:,i) = D*diag([(t.^2+1).*(t.^2+1).*(sin(t).^2),...
(t.^2+1).*(t.^2+1).*(sin(2*t).^2),...
(t.^2+1).*(t.^2+1).*(sin(3*t).^2),...
(t.^2+1).*(t.^2+1).*(sin(4*t).^2),...
(t.^2+1).*(t.^2+1).*(sin(5*t).^2)])*D';
end
Deepayan Bhadra
Deepayan Bhadra el 17 de Dic. de 2017
This is working now :) Thanks!

Iniciar sesión para comentar.

Más respuestas (1)

Walter Roberson
Walter Roberson el 17 de Dic. de 2017

0 votos

In the computation for L you should be using t(i) not t

Categorías

Preguntada:

el 17 de Dic. de 2017

Comentada:

el 17 de Dic. de 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by