I would like to calculate the product of the following nadjacent matrix elements. The number of nelements to be multiplied must be indicated in the functional input. For example, for this input, I must calculate the product every 3 consecutive elements, starting from the first.
[p, ind] = max_product([1 2 2 1 3 1],3);
It gives [1*2*2, 2*2*1, 2*1*3, 1*3*1] = [4,4,6,3].
Is there a practical way to do this? Now I do this using:
for ii = 1:(length(v)-2)
p = prod(v(ii:ii+n-1));
end
where vis the input vector, and nis the number of elements to be multiplied.
in this example n=3, but can take any positive integer value.
Depending on whether it is nodd or even or length(v)odd or even, sometimes I get the right answers, but sometimes an error.
For example, for arguments:
v = [1.35912281237829 -0.958120385352704 -0.553335935098461 1.44601450110386 1.43760259196739 0.0266423803393867 0.417039432979809 1.14033971399183 -0.418125096873537 -1.99362640306847 -0.589833539347417 -0.218969651537063 1.49863539349242 0.338844452879616 1.34169199365703 0.181185490389383 0.102817336496793 0.104835620599133 -2.70026800170358 1.46129128974515 0.64413523430416 0.921962619821458 0.568712984110933]
n = 7
I get an error message:
Index exceeds matrix dimensions.
Error in max_product (line 6)
p = prod(v(ii:ii+n-1));
Is there a proper general way to do this?