Using the matlab to achieve the a(k)+a(j) when k is not equal to j in every stage
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
yang-En Hsiao
am 11 Feb. 2019
Kommentiert: Stephen23
am 11 Feb. 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 Kommentare
Akzeptierte Antwort
Stephen23
am 11 Feb. 2019
Bearbeitet: Stephen23
am 11 Feb. 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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Graphics Object Programming finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!