MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]一个简单算法的实现?? (https://www.labfans.com/bbs/showthread.php?t=5210)

sallap 2008-11-07 09:00

[求助]一个简单算法的实现??
 
一个数组,如:A=(0 0 0 0 0 3.5 4.7 0 0 0 8 0 9.0 4.5 6.5 9)
要求:
求出A中所有连续不为0的片段中,每一个数据和片段最大值的乘积,然后求该数组中上述乘积之和。
比如上式,应该求出如下值:
(3.5+4.7)*max(3.5,4.7) +8*8+(9.0+4.5+6.5+9)*max(9.0, 4.5, 6.5,9)

这个算法该如何实现? 可能很简单,但我在写条件语句while或if时,总跳入死循环。
请教高手。多谢。

meatball1982 2008-11-07 23:19

回复: 求助:一个简单算法的实现??
 
clear all
clc
A=[0 0 0 0 0 3.5 4.7 0 0 0 8 0 9.0 4.5 6.5 9];
n=length(A);
A=[A,0];
k=1;
if A(1)==0;
temp=[];
else
temp=A(1);
end
for i=1:n
if A(i)~=0
temp=[temp,A(i)];
if A(i+1)==0
temp_out(k)=sum(temp)*max(temp);
temp=[];
k=k+1;
end
end
end
out=sum(temp_out)
(3.5+4.7)*max([3.5,4.7])+8*8+(9.0+4.5+6.5+9)*max([9.0, 4.5, 6.5,9])

meatball1982 2008-11-07 23:20

回复: 求助:一个简单算法的实现??
 
有点笨,希望有帮助吧。


所有时间均为北京时间。现在的时间是 06:33

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.