what correction is required in the code?

I am trying to perform 2*2 + 2*5 + 5*8, for [2 2 5 8] vector which is product of consicutive and sum of all. without using sum() & diff() and using for loop
function [out] = pairprodsum (m)
s = 0
for i = 1
b = m(1:end-1).*m(2:end);
s = s + b;
end
out = s;

回答 (2 件)

James Tursa
James Tursa 2021 年 11 月 11 日

0 投票

If the homework assignment specifies you must use a loop, then I don't think the intent was for you to wrap a simple i=1 range around vectorized code. That being said, I suppose your "loop" technically qualifies.
b is a vector. You simply need to sum all the elements of b and return that. s = s + b does not sum the element of b ... it simply creates a new vector s that is a copy of b. You need different code to sum the elements of b. There are various ways to do this, which I will let you figure out.

4 件のコメント

Manav Divekar
Manav Divekar 2021 年 11 月 11 日
can you give some hints?
Walter Roberson
Walter Roberson 2021 年 11 月 11 日
s+b(i)
Manav Divekar
Manav Divekar 2021 年 11 月 11 日
its just gives sum of only first postion of the arrey.
James Tursa
James Tursa 2021 年 11 月 11 日
How could you maybe change the for loop range so it added up all of the elements?
Jan
Jan 2021 年 11 月 11 日
編集済み: Jan 2021 年 11 月 11 日

0 投票

A hint: You want to perform this:
  • s = 0
  • s = s + 2*2
  • s = s + 2*5
  • s = s + 5*8
You need to loop over the indices of m. There is 1 iteration less than the number of elements of m.

この質問は閉じられています。

製品

リリース

R2021a

質問済み:

2021 年 11 月 11 日

閉鎖済み:

2021 年 11 月 11 日

Community Treasure Hunt

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

Start Hunting!

Translated by