max_product that t takes v as vector and n as positive integer

3 vues (au cours des 30 derniers jours)
Wasi von Deutschland
Wasi von Deutschland le 22 Mai 2017
Commenté : Andrei Bobrov le 24 Mai 2017
My code that's not working. Please help
function [prodout,ind] = max_product(A,n)
A=0;
prodout = exp( conv(log(A),ones(1,n),'valid') );
if isreal(A), prodout=real(prodout);
end

Réponse acceptée

Stephen23
Stephen23 le 22 Mai 2017
Modifié(e) : Stephen23 le 24 Mai 2017
Method one: slidefun: Download Jos' excellent FEX submission slidefun, then you just need:
>> max_product = @(v,n)max(slidefun(@prod,n,v,'forward'))
>> [p,x] = max_product([1,2,2,1,3,1],3)
p = 6
x = 3
>> [p,x] = max_product([1,2,3,4,5,6,7,8,9,10], 2)
p = 90
x = 9
Method two: toeplitz:
>> max_product = @(v,n)max(prod(toeplitz(v(n:-1:1),v(n:end)),1));
>> [p,x] = max_product([1,2,2,1,3,1],3)
p = 6
x = 3
>> [p,x] = max_product([1,2,3,4,5,6,7,8,9,10],2)
p = 90
x = 9
  8 commentaires
Wasi von Deutschland
Wasi von Deutschland le 24 Mai 2017
if numel(v)<n
product=0;
ind=-1;
end
Wasi von Deutschland
Wasi von Deutschland le 24 Mai 2017
I really appreciate your effort

Connectez-vous pour commenter.

Plus de réponses (2)

Guillaume
Guillaume le 24 Mai 2017
Modifié(e) : Guillaume le 24 Mai 2017
Another possible way:
slide = toeplitz(v(1:n), v);
[product, ind] = max(prod(slide(:, n:end)));
  3 commentaires
Guillaume
Guillaume le 24 Mai 2017
For some reason, I'd inverted the order of the arguments to toeplitz.
Now fixed.
Stephen23
Stephen23 le 24 Mai 2017
+1 nice solution

Connectez-vous pour commenter.


Andrei Bobrov
Andrei Bobrov le 24 Mai 2017
Modifié(e) : Andrei Bobrov le 24 Mai 2017
max_product = @(A,n)max(exp(conv2(log(A(:)),ones(n,1),'valid')));
use:
>> [value,ii] = max_product([1 2 3 4 5 6 7 8 9 10], 2)
value =
90
ii =
9
>>
or with function hankel:
max_prod_hankel = @(A,n)max(prod(hankel(A(1:n),A(n:end))));
use:
>> [v,ii] = max_prod_hankel([1 2 3 4 5 6 7 8 9 10], 2)
v =
90
ii =
9
>>
  2 commentaires
Stephen23
Stephen23 le 24 Mai 2017
+1 for the hankel solution
Andrei Bobrov
Andrei Bobrov le 24 Mai 2017
Thank you Stephen.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Statistics and Machine Learning Toolbox dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by