Using the matlab to achieve the a(k)+a(j) when k is not equal to j in every stage
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
yang-En Hsiao
el 11 de Feb. de 2019
Comentada: Stephen23
el 11 de Feb. de 2019
i want to write a code which is a(k)+a(j), but k can't be equal to j,then sum it every stage ,i mean
- when k=1,sumj=a(k)+a(j)=a(1)+a(2)=3, sumj=a(k)+a(j)=a(1)+a(3)=4, sumj=a(k)+a(j)=a(1)+a(4)=5,b=3+4+5=12
- when k=2 ,sumj=3,sumj=5,sumj=6,b=3+5+6=14
- when k=3 ,sumj=4,sumj=5,sumj=7,b=4+5+7=16
- when k=4 ,sumj=5,sumj=6,sumj=7,b=5+6+7=18
a=[1 2 3 4]
sumj=0;
b=0;
for k=1:4
for j=1:4
if j~=k
sumj = a(k)+ a(j)
end
end
b=b+sumj
end
but this code will show
> sumj=3,sumj=5,sumj=6,b=5+6=11 (b shouldn't be 11,it should be 14)
> sumj=4,sumj=5,sumj=7,b=5+6+7=18 (b shouldn't be 18,it should be 16)
> sumj=5,sumj=6,sumj=7,b=5+6+7+7=25 (b shouldn't be 25,it should be 18)
How do i modify the code to let the result become what i want?
0 comentarios
Respuesta aceptada
Stephen23
el 11 de Feb. de 2019
Editada: Stephen23
el 11 de Feb. de 2019
a = [1,2,3,4];
for k = 1:4
b = 0;
for j = 1:4
if j~=k
b = b + a(k) + a(j);
end
end
disp(b)
end
Displays:
b = 12
b = 14
b = 16
b = 18
Note that no loop is required:
>> [X,Y] = ndgrid(1:4);
>> Z = ~eye(4);
>> V = sum(a(X).*Z+a(Y).*Z,1)
V =
12 14 16 18
2 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Graphics Object Programming 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!