请教一个关于循环与编程的问题
我想写一个程序 要求求出所有点之间的距离 并且在每一次求距离的过程中(比如求完第一个点和其他所有点的距离之后) 先排序 然后取出先X位(x自己定),如果距离有相同的也计入范围内,并计数,还要保存最大的距离(比如距离是 1 2 3 3 4 5,取前3位距离 那么第二个3也计入要求范围内,计数为4,最大的距离是3) ,接着求每个点的距离与最大距离的最大值并保存(就是要知道第二个点和最大距离的最大值是几 第三点和最大距离的最大值是几)。我自己写了第一个点的所有东西 但是如何做循环(也就是把第二点及以后的点所需的数据求出来)我写不出来 死活都不对
矩阵的格式是a=
我自己写的如下
a=load('1.txt');
na=length(a);
x=10;//这就是自己定的x位
sort(dist);
na=length(a);
nminpts=zeros(na,1);
dista=zeros(na,1);
nminpt=zeros(na,1);
rist=zeros(na,1);
ird=zeros(na,1);
ids=1;
for ii=1:ids,
for jj=ii+1:na,
ids=ids+1;
nminpts(ids)=sqrt( sum( (a(ii,:)-a(jj,:)).^2 ) );
dista(ids)=sqrt( sum( (a(ii,:)-a(jj,:)).^2 ) );
end;
end
ids=0;
sort(dista);
disa(minpts);
disa=unique(dista,'rows');
k=ismember(dista,disa(minpts));
n=find(k);
nminpt(1)=n
rist=max(disa(minpts),nminpts);
na=length(rist);
t=1;
ird(t)=1/(sum(rist)/n)
这段程序首先肯定是不太好而且我留了许多的接口给后面的程序 希望各位前辈指教一下这个循环怎么写
另:实际上真正输出的就是各个点的X到底是几 还有就是Ird(每个点的距离与对象最大距离的最大值),其他
都可以当做中间变量用
小弟是第四天学习matlab 对于矢量化概念也不是很清楚 这段程序肯定是效率低下但是最困扰的就是这个循环实在是不会写
先行谢谢各位前辈了 另外 各位前辈对于如何 把这种for循环精简成矢量化 有什么好的建议与改动也欢迎 小子就是抱着学习的态度来的
一次循环内做多次操作
发现上个帖子自己要求说的太多 把话精简一下 我现在编一个程序求出所有点之间的距离 并且在每一次求距离的过程中(比如求完第一个点和其他所有点的距离之后做许多操作 但是我只做了第一个点的。。循环写不出来矩阵格式:a=
谢谢各位前辈帮忙 help dist
:@)
页:
[1]