Question on ismembc and any function

6 views (last 30 days)
jana
jana on 26 Feb 2014
Commented: jana on 26 Feb 2014
Hi, I am having a problem using the ismembc and any function. Here's the code that I wrote:
while ~isempty(XH{i})
L = false(n, n);
seccost = zeros(n, n);
for ii = 1:n
for jj = 1:n
L(ii,jj) = any((ismembc(XH{i},Sc{ii,jj}))); % my problem function!!!
if L(ii,jj) == 1
seccost(ii,jj) = costs(ii,jj);
seccost(i,j) = 0;
seccost(j,i) = 0;
else
seccost(ii,jj) = 0;
end
end
end
end
this works fine for small values of n, however as n increases (n = 3000), my code takes a lot of time. I've to use seccost matrix thus generated to calculate the shortest path using graphshortetspath function. I was wondering if you have a better idea to increase the efficiency of my code. I was initially using ismember function, but I changed it to ismembc function as it is faster. But it is still not helping.

Answers (1)

Jan
Jan on 26 Feb 2014
Edited: Jan on 26 Feb 2014
Omit overwriting zeros by zeros:
L = false(n, n);
seccost = zeros(n, n);
for ii = 1:n
for jj = 1:n
L(ii,jj) = any((ismembc(XH{i},Sc{ii,jj}))); % my problem function!!!
if L(ii,jj) == 1
seccost(ii,jj) = costs(ii,jj);
end
end
How large are the elements of XH and Sc?
  1 Comment
jana
jana on 26 Feb 2014
Jan,
XH is a cell array of size 1xn where n = 3000 and Sc is of size n x n with n = 3000 and it is again a cell array. Both of these variables contain a set of numbers example: XH{1} = [1,2,3] and Sc{1,2} = [1,3,4]. I dont think by omitting overwriting zeros by zeros is going to help much. Is there a better way of writing the above code. I am new to matlab and this was the best I could think of.

Sign in to comment.

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!