开发者

Matlab get rid of loops

I'm a newbie in Matlab and trying get rid of Java/C++ customs.

The question is "how I can get rid of these for loops."

I tried to use nchoosek(n0,2) to get开发者_JS百科 rid of one of the loops but another problem arose.(performance of nchoosek)

<Matlab code>
for j=2:n0
   for i=1:j-1
       %wij is the number of rows of A that have 1 at both column i and column j
       %summing col  i and j to find #of common 1's
       wij = length(find((A(:,i)+A(:,j))==2));
       %store it
       W(1,j)=wij;
         %testing whether the intersection of any two columns is too large
         if wij>= (1+epsilon)*u2;
         %create and edge between col i j
         end
   end
end
</matlab Code>


I assume that A is an array with only 0 and 1.

Then you can create a nCol-by-nCol array B with the "distance" between colums by writing

B = A'*A; %'# B(i,j) = length(find((A(:,i)+A(:,j))==2))

%# threshold
largeIntersection = B >= u2;

%# find i,j of large intersections
[largeIJ(:,1),largeIJ(:,2)] = find(largeIntersection);

%# make sure we only get unique i,j pairs
largeIJ = unique(sort(largeIJ,2),'rows');
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜