Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-11-07, 09:00   #1
sallap
初级会员
 
注册日期: 2008-06-17
年龄: 43
帖子: 12
声望力: 17
sallap 正向着好的方向发展
默认 [求助]一个简单算法的实现??

一个数组,如: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时,总跳入死循环。
请教高手。多谢。
sallap 当前离线   回复时引用此帖
旧 2008-11-07, 23:19   #2
meatball1982
初级会员
 
注册日期: 2008-04-17
年龄: 42
帖子: 7
声望力: 0
meatball1982 正向着好的方向发展
默认 回复: 求助:一个简单算法的实现??

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   #3
meatball1982
初级会员
 
注册日期: 2008-04-17
年龄: 42
帖子: 7
声望力: 0
meatball1982 正向着好的方向发展
默认 回复: 求助:一个简单算法的实现??

有点笨,希望有帮助吧。
meatball1982 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[讨论]Matlab7.1中,fread和imread命令是不是不支持*jp2格式的图片阿? qinyonglyz MATLAB论坛 0 2009-01-05 09:00
如何画三维隐函数的图 lv19860312 MATLAB论坛 0 2008-12-16 21:31
[求助]如何用FFT从数据序列中提取相位信息? leechau Origin论坛 0 2008-11-05 21:50
[求助]曲线拟合的问题 心际依然 MATLAB论坛 1 2008-04-29 10:21
How MATLAB Represents Pixel Colors TechnicalArticles MATLAB技术文章 0 2008-01-06 16:32


所有时间均为北京时间。现在的时间是 10:43


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