|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我想写一个程序 要求求出所有点之间的距离 并且在每一次求距离的过程中(比如求完第一个点和其他所有点的距离之后) 先排序 然后取出先X位(x自己定),如果距离有相同的也计入范围内,并计数,还要保存最大的距离(比如距离是 1 2 3 3 4 5,取前3位距离 那么第二个3也计入要求范围内,计数为4,最大的距离是3) ,接着求每个点的距离与最大距离的最大值并保存(就是要知道第二个点和最大距离的最大值是几 第三点和最大距离的最大值是几)。
我自己写了第一个点的所有东西 但是如何做循环(也就是把第二点及以后的点所需的数据求出来)我写不出来 死活都不对
矩阵的格式是a=[1 2;2 3;3 4;6 8]
我自己写的如下
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 对于矢量化概念也不是很清楚 这段程序肯定是效率低下 但是最困扰的就是这个循环实在是不会写
先行谢谢各位前辈了 |
|