Info

이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.

Finding Nonzero Elements in a Vector

조회 수: 1 (최근 30일)
Sophie Culhane
Sophie Culhane 2020년 9월 20일
마감: MATLAB Answer Bot 2021년 8월 20일
In a assignment I am working on, we are tasked with writing a MATLAB function that takes as input a nonempty vector v and returns the product of the nonzero elements in the vector. If there are no nonzero elements, a value of 1 is returned. As of now, I have a working program that calculates the correct answer, however it computes the product of all elements, instead of all nonzero elements. I am asking for help on how to make this simple change in my program. Below is what I have so far.
function prod = ex1(v)
%
%
vLength = length(v);
prod = 1;
CurrentPosition = 1;
for CurrentPosition = 1:vLength
prod = prod * v(CurrentPosition);
CurrentPosition = CurrentPosition + 1;
end
  댓글 수: 1
Walter Roberson
Walter Roberson 2020년 9월 20일
By the way, the code can be vectorized to less than 20 characters (excluding the "function" line.)

답변 (1개)

James Tursa
James Tursa 2020년 9월 20일
편집: James Tursa 2020년 9월 20일
You need to wrap this statement with an if-test and only execute it if v(CurrentPosition) is non-zero:
prod = prod * v(CurrentPosition);
Also, get rid of the following line. You should not be manually altering the for-loop index variable within the loop:
CurrentPosition = CurrentPosition + 1;
You can get rid of this line also, since it doesn't actually accomplish anything useful.
CurrentPosition = 1;

태그

Community Treasure Hunt

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

Start Hunting!

Translated by