Matlab编程问题,如何不用break

来源:百度知道 编辑:UC知道 时间:2024/06/21 03:32:48
我刚学,请多指教
貌似大家都说break不是一个很好的指令,下面这个程序怎么不用break呢?

c=1;
for a=1:length(dis_y)
for b=1:length(dis_x)
distance(c,:)=sqrt((dis_x(a)-x).^2+(dis_y(b)-y).^2);
if c==Index
break
end
c=c+1;
end
if c==Index
break
end
end

dis_y,dis_x,x,y,都是向量
Index是一个整数
运费问题.在一个区域内计算到6个点的运费,然后求出运费最小的位置坐标。运费=0.5*距离*数量。
我的思路:先求运费,然后比较出最小值,然后再回去找坐标
我的代码:

clear
%Find the position of the distribution center,using loops
%Given costants
x=[1 7 8 17 22 27];
y=[28 18 16 2 10 8];
V=[3 7 4 5 2 6];

%The possible x,y position of the distribution center
dis_x=0:0.5:30;
dis_y=0:0.5:30;

%Finding the min cost
k=1;
for m=1:length(dis_y)
for n=1:length(dis_x)
distance(k,:)=sqrt((dis_x(n)-x).^2+(dis_y(m)-y).^2);
cost(k,:)=0.5*distance(k,:).*V;<

想做什么。

好像找一些不在区域内的点。
描述好问题。

看完后,教你一个函数.
find(数组==最大值)
比如

dis=0:0.1:10;
find_dis=0.5;
index=find(dis==find_dis)

break 我感觉是相当不错的。不然很多语言怎么 都有这个呢?效率也还可以吧。

用goto

不是BREAK不好,而是你要是不会用就会出错,而且不容易找出来,你这个用BREAK明显优于用GOTO

disp(dis_x(b))
disp(dis_y(a))有点多余,直接dis_x(b),
dis_y(a)),就行了,注意后面要跟逗号,不能用冒号。