adding and subtracting elements in the same row in an nested for loop
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Chris Ron de
el 16 de Sept. de 2020
Comentada: Chris Ron de
el 16 de Sept. de 2020
Hi,
I have a question about the use of nested for loops which I cannot found in the several explanations.
My problem is that I have an initial vector with length 10.
t = [5 5 5 5 5 5 5 5 5 5];
I want to add a delta (d) to one and subtract a delta (d) to another value in the same row at the same time, without interfering with the other values.
My assumption is that I have to do this using a nested for loop. So far I am not able to come up with a solution that do not interfere with the other values.
What I want to do is make a new matrix with the different values of t_n in it.
The first nine rows of the matrix are:
t_n(1,:)=[t(1)+d t(2)-d t(3) t(4) t(5) t(6) t(7) t(8) t(9) t(10)];
t_n(2,:)=[t(1)+d t(2) t(3)-d t(4) t(5) t(6) t(7) t(8) t(9) t(10)];
t_n(3,:)=[t(1)+d t(2) t(3) t(4)-d t(5) t(6) t(7) t(8) t(9) t(10)];
t_n(4,:)=[t(1)+d t(2) t(3) t(4) t(5)-d t(6) t(7) t(8) t(9) t(10)];
t_n(5,:)=[t(1)+d t(2) t(3) t(4) t(5) t(6)-d t(7) t(8) t(9) t(10)];
t_n(6,:)=[t(1)+d t(2) t(3) t(4) t(5) t(6) t(7)-d t(8) t(9) t(10)];
t_n(7,:)=[t(1)+d t(2) t(3) t(4) t(5) t(6) t(7) t(8)-d t(9) t(10)];
t_n(8,:)=[t(1)+d t(2) t(3) t(4) t(5) t(6) t(7) t(8) t(9)-d t(10)];
t_n(9,:)=[t(1)+d t(2) t(3) t(4) t(5) t(6) t(7) t(8) t(9) t(10)-d];
Since this is way to complicated and I don't want to write this whole matrix with t(1)-d, t(2)+d etc, I am looking for help. Can anyone tell me how to do this with a loop or any other solution?
0 comentarios
Respuesta aceptada
Stephen23
el 16 de Sept. de 2020
Editada: Stephen23
el 16 de Sept. de 2020
"My assumption is that I have to do this using a nested for loop."
Using array operations would be a much better use of MATLAB, e.g.:
>> d = 3;
>> n = 10;
>> t = repmat(5,1,n)
t =
5 5 5 5 5 5 5 5 5 5
>> m = toeplitz([zeros(1,n-1)],[0,-d,zeros(1,n-2)]);
>> m(:,1) = d;
>> m = m + t % Requires R2016b or later. For earlier versions use BSXFUN.
m =
8 2 5 5 5 5 5 5 5 5
8 5 2 5 5 5 5 5 5 5
8 5 5 2 5 5 5 5 5 5
8 5 5 5 2 5 5 5 5 5
8 5 5 5 5 2 5 5 5 5
8 5 5 5 5 5 2 5 5 5
8 5 5 5 5 5 5 2 5 5
8 5 5 5 5 5 5 5 2 5
8 5 5 5 5 5 5 5 5 2
Más respuestas (0)
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!