24小时热门版块排行榜    

查看: 1679  |  回复: 7
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

tao317594856

金虫 (小有名气)

[求助] 关于Matlab中for循环的问题,求达人指点,谢谢了 已有1人参与

c1=[];
c2=[];
N=100000;
a1=-pi/2+2*(pi/2)*rand(N,1);
a2=-pi/3+2*(pi/3)*rand(N,1);
a4=-pi/2+2*(pi/2)*rand(N,1);
a5=-pi/3+2*(pi/3)*rand(N,1);
b=cos(a1+a4)./10 + cos(a1)./10 + (cos(a1 + a4).*cos(a5))./5 + (cos(a1).*cos(a2))./5;
c=sin(a1+a2)./10+sin(a1+a4)./10+sin(a1)./10+sin(a1-a2)./10+(sin(a1+ a4).*cos(a5))./5;
d=sin(a2)./5 + sin(a5)./5;
c1=[c1 d]; %将Z轴数值赋值到C1中
c2=[c2 b c]; %将x、y轴数值赋值到C2中
c11=max(c1);
c12=min(c1) %求出Z轴的最大值和最小值
% 定义Z轴分隔间隔的大小
syms derta1
% 定义Z轴分隔的数目
k1=3;
xl=abs(c11-c12);    %求解Z坐标最大值与最小值的差
derta1=xl/k1;
c3=[c1 c2];
c4=sortrows(c3,1);
for j=1:k1-1
    c5{j}=[];
for i=1:N
if c4(i,1)<=(c12+(xl/k1)*(j+1))&&c4(i,1)>(c12+(xl/k1)*(j))
c5{j}=[c5{j};c12+derta1*(j-1) c4(i,2) c4(i,3)]; %%%%%%%%%%% 不同点,改其横坐标为分段数值
end
end
end

以上是我写的程序,问题是从第一个for循环开始的。我想要在判断出来if 条件后,将满足条件的C4中的行矩阵赋值为[] 空集,这样就可以大大的减小循环时间,可是我没有写出来 ,写成如下的程序后
k3=0
for j=1:k1-1
    c5{j}=[];
    k2=1
   for i=k2:N-k3
if c4(i,1)<=(c12+(xl/k1)*(j+1))&&c4(i,1)>(c12+(xl/k1)*(j))
c5{j}=[c5{j};c12+derta1*(j+0.5) c4(i,2) c4(i,3)] %%%%%%%%%%% 不同点,改其横坐标为分段数值
c4(i,=[]
k2=i
k3=k3+1
else
    k2=k2+1
end
end
end
发现,for 循环后面跟的循环体在循环过程中是不能变化的,因此没办法再每次循环到符合条件的C4矩阵中的行抽离出来,导致将数据分多少层就需要进行N(数据点数)*K(分层数)次计算。
不知道有什么别的方法可以实现每循环一次,遇到符合条件的变量就抽离出来,在进行下一次循环的时候就可以扫描N-1个数据了,然后还能继续运行呢?求大神指教啊,
求大神指教!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhswee

铁杆木虫 (著名写手)

不清楚你要实现什么。

[ 发自小木虫客户端 ]
3楼2014-11-01 00:51:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 8 个回答

johnliu1983

至尊木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
你可以把内层循环改成这样的试试,把for i=1:N,改成 for i=1:length(c4)
然后再删数据。这样每次循环到内循环的时候就会改变循环次数了。有什么不明白的再问我。
4楼2014-11-01 06:14:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tao317594856

金虫 (小有名气)

引用回帖:
4楼: Originally posted by johnliu1983 at 2014-11-01 06:14:24
你可以把内层循环改成这样的试试,把for i=1:N,改成 for i=1:length(c4)
然后再删数据。这样每次循环到内循环的时候就会改变循环次数了。有什么不明白的再问我。

首先,我是想内循环的时候,每循环判定符合条件1次,c4就减少符合条件的相应的一行,而您所说的是在最外部每次取K值的时候,减少响应符合上一次k值条件的所有的行。
其次,即使把for i=1:N,改成 for i=1:length(c4),将程序写成如下:
for j=1:k1-1
    c5{j}=[];
for i=1:length(c4)
if c4(i,1)<=(c12+(xl/k1)*(j+1))&&c4(i,1)>(c12+(xl/k1)*(j))
c5{j}=[c5{j};c12+derta1*(j+0.5) c4(i,2) c4(i,3)]; %%%%%%%%%%% 不同点,改其横坐标为分段数值
c4(i,=[];
end
end
end
也是无法执行的,因为for 后面的 i=1:length(c4),已经确定i是从1执行到c4的初始长度了,在该循环下c4的长度是不能改变的

最后,还请您再帮忙思考思考,怎么能在内循环层里,每次遇到满足条件的就剔除,然后还能在循环体 里直接执行新C4的行数次数的循环呢,是不是有别的循环循环函数之类的可以满足要求呢,因为这样可以大量减小计算量,有很大优势的。
5楼2014-11-01 11:19:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tao317594856

金虫 (小有名气)

自己再顶一下,防止帖子沉了
6楼2014-11-01 11:19:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +4 jCd0dEvKHShX 2026-08-29 6/300 2026-08-30 13:54 by GkCVyODlx4mR
[基金申请] 国社科又开始会评了,不知道这次命运如何 +3 雨打竹帘 2026-08-30 4/200 2026-08-30 12:35 by 白大多亮
[博后之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +5 gy1nBQXYQJqL 2026-08-29 8/400 2026-08-30 12:03 by l0VvVHGBGRLv
[考研] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +6 ASdOkHsho7FD 2026-08-28 9/450 2026-08-30 11:30 by l0VvVHGBGRLv
[基金申请] 面上意见出来了 +9 黄鸟于飞Chao 2026-08-29 17/850 2026-08-30 10:28 by 孤独的英雄6
[基金申请] 麻烦专家们看看评委们的意见(F口面上) +6 gdd2018 2026-08-28 11/550 2026-08-30 08:58 by 超级无敌华子
[考博] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 G6APbkg8SA6w 2026-08-29 4/200 2026-08-30 07:28 by ZPa0EcMwuECS
[硕博家园] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +4 gy1nBQXYQJqL 2026-08-29 5/250 2026-08-30 06:55 by ZPa0EcMwuECS
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 ASdOkHsho7FD 2026-08-28 7/350 2026-08-30 06:10 by ZPa0EcMwuECS
[教师之家] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +5 ASdOkHsho7FD 2026-08-28 8/400 2026-08-30 05:48 by ZPa0EcMwuECS
[论文投稿] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +5 gy1nBQXYQJqL 2026-08-29 6/300 2026-08-30 01:58 by ZPa0EcMwuECS
[基金申请] 国自然面上复盘~欢迎讨论 (金币+15) +15 晴天加油 2026-08-26 16/800 2026-08-29 18:28 by symmetry
[基金申请] 基金不中,共勉 +11 eulota 2026-08-26 11/550 2026-08-28 14:22 by 火星超人xi
[基金申请] 基金系统什么内容也没有 30+4 winsaint 2026-08-27 9/450 2026-08-28 11:06 by maolC
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +5 yuleib84 2026-08-26 6/300 2026-08-28 00:02 by yudaoqian88
[基金申请] 怎么看青基中了没有啊 +5 叶九微 2026-08-26 5/250 2026-08-27 10:35 by l_zh2008
[基金申请] 我不理解! +15 Edward_pc 2026-08-26 23/1150 2026-08-26 20:34 by zzuzxg
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +25 木水思豆 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[基金申请] 明天应该可查了!? +6 chengyan1220 2026-08-23 6/300 2026-08-25 19:45 by zfd97
[基金申请] 某些机构,以效率低为荣,以效率低作为存在感 +9 yuleib84 2026-08-25 10/500 2026-08-25 17:14 by alexon
信息提示
请填处理意见