24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 1460  |  回复: 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的回帖

johnliu1983

至尊木虫 (著名写手)

【答案】应助回帖

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

zhswee

铁杆木虫 (著名写手)

不清楚你要实现什么。

[ 发自小木虫客户端 ]
3楼2014-11-01 00:51:31
已阅   回复此楼   关注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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 化学308分求调剂 +6 你好明天你好 2026-03-23 6/300 2026-03-27 10:32 by shangxh
[考研] 求调剂,一志愿 南京航空航天大学大学 ,080500材料科学与工程学硕 +4 @taotao 2026-03-26 5/250 2026-03-27 08:10 by hypershenger
[硕博家园] 招收生物学/细胞生物学调剂 +3 IceGuo 2026-03-26 4/200 2026-03-27 05:35 by user003
[考研] 284求调剂 +11 junqihahaha 2026-03-26 12/600 2026-03-27 04:37 by wxiongid
[考研] 329求调剂 +7 钮恩雪 2026-03-25 7/350 2026-03-27 04:28 by wxiongid
[考研] 333求调剂 +6 wfh030413@ 2026-03-23 6/300 2026-03-26 22:45 by 学员8dgXkO
[考研] 一志愿北化求调剂 +3 Jsman 2026-03-22 3/150 2026-03-26 21:06 by ajpv风雷
[考研] 一志愿 西北大学 总分282 英语一62 求调剂 +7 18419759900 2026-03-25 7/350 2026-03-26 16:07 by 不吃魚的貓
[考研] 调剂310 +3 温柔的晚安 2026-03-25 4/200 2026-03-25 23:16 by peike
[考研] 材料求调剂 +4 .m.. 2026-03-25 4/200 2026-03-25 21:30 by peike
[考研] 311求调剂 +4 勇敢的小吴 2026-03-20 4/200 2026-03-25 18:12 by xcjcqu
[考研] 生物技术与工程 +3 1294608413 2026-03-25 4/200 2026-03-25 18:02 by 1294608413
[考研] 考研化学308分求调剂 +10 你好明天你好 2026-03-23 11/550 2026-03-25 10:23 by userper
[有机交流] 有机合成求助 20+3 FENGSHUJEI 2026-03-23 5/250 2026-03-24 19:31 by 88817753
[基金申请] 请教下大家 2026年国家基金申请是双盲审吗? +3 lishucheng1 2026-03-22 5/250 2026-03-24 08:22 by gltch
[考研] 生物学一志愿985,分数349求调剂 +6 zxts12 2026-03-21 9/450 2026-03-23 18:37 by macy2011
[考研] 291求调剂 +5 孅華 2026-03-22 5/250 2026-03-23 09:20 by haoshis
[考研] 石河子大学(211、双一流)硕博研究生长期招生公告 +3 李子目 2026-03-22 3/150 2026-03-22 21:01 by 怎么释怀
[考研] 085601调剂 358分 +3 zzzzggh 2026-03-20 4/200 2026-03-21 10:21 by luoyongfeng
[考研] A区线材料学调剂 +5 周周无极 2026-03-20 5/250 2026-03-20 21:33 by laoshidan
信息提示
请填处理意见