# how to increase the run time of the matrix ?

1 ビュー (過去 30 日間)
navanit dubey 2021 年 3 月 25 日

Hey ,
I am runnng a code for finding the shorter path , i am able to do it easily for matrix of 37*37 but as I increase its value it start to take lot of time.I tried to preallocate few values in it but not able to do it easily.
I am attaching 2 files for the reference. less_time.m is of 37*37 matrix and more_time.m is of 148*148 matrix.
kindly guide me how to preallocate the values in it so that I can increase the time of the operations
##### 2 件のコメント表示非表示 1 件の古いコメント
navanit dubey 2021 年 3 月 25 日
sure sir , I added them just to get the clean values in command window.
Thankyou for the response

サインインしてコメントする。

### 回答 (2 件)

Matt J 2021 年 3 月 25 日
The best option might be to use Matlab's own shortestpath routine,
##### 3 件のコメント表示非表示 2 件の古いコメント
navanit dubey 2021 年 3 月 25 日
yes sir but I want that in my matlab file that I have attached to it as

サインインしてコメントする。

Jan 2021 年 3 月 25 日

Some standard ideas for improving the runtime:
• sqrt(X) is faster than X^0.5
• The JIT acceleration is more powerful, if you write one command per line. Avoid constructs like this: "mink=k;minl=m;minkl=PLkm;"
• Logical indexing is faster than numerical indexing.
% Replace:
Nonzero=find(PLK);
PLKPLK=PLK(Nonzero);
% by:
PLKPLK = PLK(PLK ~= 0);
• This works, but the multiplication by 1 is confusing only, most of all in the combination with a lowercase L:
D = zeros(l*1,l*1);
% Nicer:
D = zeros(l, l); % But I avoid "l" consequently to reduce confusions
• If you need 1 element only, do not waste time with searching all elements:
Select=find(Pcum>=rand);
to_visit=LJD(Select(1));
% Faster:
Select = find(Pcum>=rand, 1);
to_visit=LJD(Select);
• In line 110 I assume you want a vector, not a matrix: "PP=zeros(Len_LJD);" Use PP=zeros(Len_LJD, 1) instead.
• Then you can replace:
PP=zeros(Len_LJD);
for i=1:Len_LJD
PP(i)=(Tau(W,LJD(i))^Alpha)*((Eta(LJD(i)))^Beta);
end
sumpp=sum(PP);
PP=PP/sumpp;%Build probability distribution
Pcum(1)=PP(1);
for i=2:Len_LJD
Pcum(i)=Pcum(i-1)+PP(i);
end
Select=find(Pcum>=rand);
to_visit=LJD(Select(1));
% By:
PP = Tau(W,LJD).^Alpha .* Eta(LJD).^Beta;
PP = PP / sum(PP);
Pcum = cumsum(PP);
Select = find(Pcum >= rand, 1);
to_visit = LJD(Select);
##### 2 件のコメント表示非表示 1 件の古いコメント
Jan 2021 年 3 月 25 日

Now use the profiler to find out, where the most time is spent. This is the place to optimize the code to gain more speed.

サインインしてコメントする。

### カテゴリ

Find more on Matrix Indexing in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by