Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to improve execution time of the following Matlab code
    text
    copied!<p>Please help me to improve the following Matlab code to improve execution time. </p> <p>Actually I want to make a random matrix (size <code>[8,12,10]</code>), and on every row, only have integer values between <code>1</code> and <code>12</code>. I want the random matrix to have the sum of elements which has value (1,2,3,4) per column to equal <code>2</code>.</p> <p>The following code will make things more clear, but it is very slow. Can anyone give me a suggestion??</p> <pre><code>clc clear all jum_kel=8 jum_bag=12 uk_pop=10 for ii=1:uk_pop; for a=1:jum_kel krom(a,:,ii)=randperm(jum_bag); %batasan tidak boleh satu kelompok melakukan lebih dari satu aktivitas dalam satu waktu end end for ii=1:uk_pop; gab1(:,:,ii) = sum(krom(:,:,ii)==1) gab2(:,:,ii) = sum(krom(:,:,ii)==2) gab3(:,:,ii) = sum(krom(:,:,ii)==3) gab4(:,:,ii) = sum(krom(:,:,ii)==4) end for jj=1:uk_pop; gabh1(:,:,jj)=numel(find(gab1(:,:,jj)~=2&amp; gab1(:,:,jj)~=0)) gabh2(:,:,jj)=numel(find(gab2(:,:,jj)~=2&amp; gab2(:,:,jj)~=0)) gabh3(:,:,jj)=numel(find(gab3(:,:,jj)~=2&amp; gab3(:,:,jj)~=0)) gabh4(:,:,jj)=numel(find(gab4(:,:,jj)~=2&amp; gab4(:,:,jj)~=0)) end for ii=1:uk_pop; tot(:,:,ii)=gabh1(:,:,ii)+gabh2(:,:,ii)+gabh3(:,:,ii)+gabh4(:,:,ii) end for ii=1:uk_pop; while tot(:,:,ii)~=0; for a=1:jum_kel krom(a,:,ii)=randperm(jum_bag); %batasan tidak boleh satu kelompok melakukan lebih dari satu aktivitas dalam satu waktu end gabb1 = sum(krom(:,:,ii)==1) gabb2 = sum(krom(:,:,ii)==2) gabb3 = sum(krom(:,:,ii)==3) gabb4 = sum(krom(:,:,ii)==4) gabbh1=numel(find(gabb1~=2&amp; gabb1~=0)); gabbh2=numel(find(gabb2~=2&amp; gabb2~=0)); gabbh3=numel(find(gabb3~=2&amp; gabb3~=0)); gabbh4=numel(find(gabb4~=2&amp; gabb4~=0)); tot(:,:,ii)=gabbh1+gabbh2+gabbh3+gabbh4; end end </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload