有关matlab for循环的问题,求大神解答,主要是循环错在哪了

&& 查看话题
关于Matlab中for循环的问题,求达人指点,谢谢了
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=; %将Z轴数值赋值到C1中
c2=; %将x、y轴数值赋值到C2中
c11=max(c1);
c12=min(c1) %求出Z轴的最大值和最小值
% 定义Z轴分隔间隔的大小
syms derta1
% 定义Z轴分隔的数目
xl=abs(c11-c12);& & %求解Z坐标最大值与最小值的差
derta1=xl/k1;
c4=sortrows(c3,1);
for j=1:k1-1
& & c5{j}=;
if c4(i,1)&=(c12+(xl/k1)*(j+1))&&c4(i,1)&(c12+(xl/k1)*(j))
c5{j}=; %%%%%%%%%%% 不同点,改其横坐标为分段数值
以上是我写的程序,问题是从第一个for循环开始的。我想要在判断出来if 条件后,将满足条件的C4中的行矩阵赋值为 空集,这样就可以大大的减小循环时间,可是我没有写出来 ,写成如下的程序后
for j=1:k1-1
& & c5{j}=;
& &for i=k2:N-k3
if c4(i,1)&=(c12+(xl/k1)*(j+1))&&c4(i,1)&(c12+(xl/k1)*(j))
c5{j}= %%%%%%%%%%% 不同点,改其横坐标为分段数值
& & k2=k2+1
发现,for 循环后面跟的循环体在循环过程中是不能变化的,因此没办法再每次循环到符合条件的C4矩阵中的行抽离出来,导致将数据分多少层就需要进行N(数据点数)*K(分层数)次计算。
不知道有什么别的方法可以实现每循环一次,遇到符合条件的变量就抽离出来,在进行下一次循环的时候就可以扫描N-1个数据了,然后还能继续运行呢?求大神指教啊,
求大神指教!
自己先顶一下 不清楚你要实现什么。 你可以把内层循环改成这样的试试,把for i=1:N,改成 for i=1:length(c4)
然后再删数据。这样每次循环到内循环的时候就会改变循环次数了。有什么不明白的再问我。 : Originally posted by johnliu1983 at
你可以把内层循环改成这样的试试,把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}=; %%%%%%%%%%% 不同点,改其横坐标为分段数值
也是无法执行的,因为for 后面的 i=1:length(c4),已经确定i是从1执行到c4的初始长度了,在该循环下c4的长度是不能改变的
最后,还请您再帮忙思考思考,怎么能在内循环层里,每次遇到满足条件的就剔除,然后还能在循环体 里直接执行新C4的行数次数的循环呢,是不是有别的循环循环函数之类的可以满足要求呢,因为这样可以大量减小计算量,有很大优势的。 自己再顶一下,防止帖子沉了 : Originally posted by zhswee at
不清楚你要实现什么。 就是将三维散点数据按Z轴分段啊 : Originally posted by tao at
首先,我是想内循环的时候,每循环判定符合条件1次,c4就减少符合条件的相应的一行,而您所说的是在最外部每次取K值的时候,减少响应符合上一次k值条件的所有的行。
其次,即使把for i=1:N,改成 for i=1:length(c ... 您好,如果用c4(i,:)=;执行这个之后,再用length(c4)的值就会相应的少一个。其它的我就没有时间看了。不过我写这个有问题,你应该把length(c4),改成size(c4,1),我之前是随便看了一下,没想到是好几列,应该有这个。关于ode45的一个问题,求大神解答!!_matlab吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:80,041贴子:
关于ode45的一个问题,求大神解答!!收藏
我有一个function了,是func(t,y,u,d,g,L)d,g,L都是常数,但是u 是一个关于t的变量u=@(t)10*exp(-t.^2/20).*sin(t.^3),我怎么把u这个变量code进去??然后再用ode45求出来微分?我试了一下直接输入进去,但是无论是输在func里面,还是直接建立u,都说我有错误……在线等大神!!谢谢!!!
你这个方程u和t都是未知量吧,两个未知数能用ode45求么?
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或求大神翻译下面一段话:(Q #3)里面的那段话.上面的不用翻译;这个可能是关于数值分析和matlab的问题.loglog是对数-对数坐标系,FD,BD,CD ,前向,中心和后项差分_作业帮
求大神翻译下面一段话:(Q #3)里面的那段话.上面的不用翻译;这个可能是关于数值分析和matlab的问题.loglog是对数-对数坐标系,FD,BD,CD ,前向,中心和后项差分
求大神翻译下面一段话:(Q&#3)里面的那段话.上面的不用翻译;这个可能是关于数值分析和matlab的问题.loglog是对数-对数坐标系,FD,BD,CD ,前向,中心和后项差分
做一个loglog的错误算法来求(F什么什么),用FD BD CD三点和五点的近似方程}

我要回帖

更多关于 matlab 跳出for循环 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信