Home > Blockchain >  How to increase the efficiency of this MATLAB program by using vectorization techniques
How to increase the efficiency of this MATLAB program by using vectorization techniques

Time:10-28

I have a MATLAB code snippet as below. For now I have tried two versions of implementation to apply a function standard_deviation_distance to each element in an array. I wonder if there are any potential improvements on the code efficiency/performance in terms of the running time optimization (i.e., I hope the code can be run as fast as possible). Any suggestions will be greatly appreciated!

nodetraffic = [2890.85952947685;33631.3424675642;51023.8914146603;7433.42834354590;1016.11278142354;17100.4868029379;1880.02041807132;1173.91525070894;128049.246582387;76697.8146249757;18221.9475120514;92107.6044649176;5262.11289569660;39.7591703296362;5108.57418569760;420.110850549466;154.118191940529;22191.9896264174;19853.7819344730;20084.3433668245;4509.08400443868;14580.2466845538;5144.31282960011;26576.6709803801;2390.17118649677;10705.8962477288;5283.61997133568;920.763948349926;863.604391735422;6198.14213094062;7892.46798526060;13157.6983030222;11424.8405634434;6552.88136275578;86688.0922657399;20689.3786675885;1057.48886951813;5699.16767084394;18777.1808898711;29292.8845200579;104.535177815445;582.966739009452;1018.92942328673;978.805014899412;7480.17271391159;9.03080403075865;271.850909753344;3940.16438816671;11952.2982310035;12304.8724880032;7458.96196929070;59.8442898052539;14740.8019559742;12398.8390129157;0.469132954673136;23489.5566187301;5923.85618794290;1379.22222567070;508.883225480780;12484.8474094637;11860.6103875762;10.5998847285353;3052.86109059148;12113.4285170377;23845.9037821591;73.8415964881271;22248.4165478800;5510.12017599359;11269.5577651867;55246.4916186339;3789.65676465580;5596.18874316899;370.248832170057;7896.28488166394;5849.94354678460;19663.5826237038;20231.5327227989;2383.33293624336;314.619461855528;384.369700814200;20144.4130371698;850.214471517476;391.292128726802;25207.8840030446;6471.65474925392;4852.85576757807;6973.72243444459;593.970696494450;465.135861693986;13591.9207257352;13177.9558258100;109.987060595403;5216.50887065274;66847.6501735510;4447.43166668544;350.929127697954;68.0533021728413;37365.7760093714;1926.91284300287;32208.7214396670;7062.31031009157;7886.00979245598;100.185752458563;2965.11755596651;921.248727845755;3603.91981203308;2400.66015953090;5466.57828546165;29305.5978152150;376.839471352905;45725.6325834155;7049.09264654264;18349.2579346235;11495.1696241032;9234.32339769370;153.883528808321;20640.9718573200;38451.2880750979;390.845885533262;14588.9071626248;84565.1070678646;6809.86223391693;19015.6371587926;11197.4545839420;2196.00562850276;742.395789771462;12065.3664118377;772.128110311381;4921.60417521866;42099.5012858108;1252.09820924966;6782.94764419939;24871.0885316028;2580.38245963017;795.150121641603;11.2090251510233;17786.9685678662;12712.3883771991;1226.25619610483;894.404904991284;5.23942612212563;686.416079430717;30632.4333466412;815.964775733559;6911.70276556121;9588.44988079400;13372.6478922245;2846.83188901633;40105.4989063589;9297.38379468522;2704.62509125861;4.01114841415515;12.0902842360016;6370.65107724281;10377.1970402538;177.468968463937;5105.53354961703;18262.4349510611;505.220276389939;3469.55199031887;862.911761825007;7189.78914649937;12546.8741124716;63806.7444458179;27406.7228005580;945.778741676970;15803.4656942000;7490.34911912411;311.642934874830;6263.39382603778;17742.3577840337;54282.8096369924;20998.8296411256;1112.29475772248;1531.57643702624;2040.14297483350;169.740908453007;337.416839385778;2267.21695235444;7430.81258791193;18542.1183199998;2070.51897237928;7203.07611587376;1121.49261888710;3055.69427553652;10797.0938620136;12491.1622633079;15892.6038088236;4357.88966671370;46.0573335765536;381.113161090246;473.525236226414;918.742301215104;5.31100805143009;26.3070060309394;6823.79733372166;23316.5780182723;2180.09090250762;439.796842981488;3908.62982595353;335.722299069978;10604.2119378323;9010.22084695732;942.870221900566;182.722649715912;2654.78786271785;683.332662561477;8863.95456911547;263.535200113626;213.319562097158;2830.36105054017;28294.7250317879;7669.01887725851;2340.77002713059;5069.50477835743;13787.7459934525;369.560321037331;751.144909353095;23411.2189939608;620.133223840214;11325.5018817355;25710.7530689443;15244.3259576694;527.283069819459;22685.1705389227;1976.93895158414;243.176066229137;762.136808288071;682.064498752620;1966.22992843524;1535.81071386684;15641.9772798050;8986.29910267459;5492.38242475614;2578.78664370525;1027.68655432000;1.55476992477739;91759.1536567629;2088.62381970982;15436.7804254289;11378.5187459602;8718.48281765407;1227.24803991149;8.41334328326465;332.887934276314;24494.0032742935;71.4692364785140;25726.4389561230;96.7228477666146;17.1177589318803;5390.04286037917;9.49485957272148;539.851342755188;1818.06349113166;1389.86357905462;559.107701797842;40953.2480452025;51001.6265605591;49704.2804210793;1139.49251971615;10001.2164287727;27694.4339980896;3481.40786956846;773.196791705008;1786.88555604007;27895.7037110020;2224.38937854160;14709.9832975818;43.8112251045241;4255.68205471171;1069.68222129878;11720.9530449596;10121.9115291401;4236.80881562809;660.778680747174;8918.49441228844;17471.2489528514;8553.03007262504;2.48493030336125e-05;30.1608718187530;8301.52894217879;3535.29773224620;1226.40862183102;15631.2813387815;8645.08437245050;574.864194353387;4765.98452688949;4245.22148078054;14211.0686972415;25979.9720186526;5.98386343979690;37980.0531890682;10414.1619750181;7425.54985810586;0.0135043802265569;50.1791076834331;61816.0773434767;3377.61268644527;48067.7087828590;53790.6114078345;63.8939804207488;8996.16176194873;1693.24531519395;4582.98949388764;7357.05119104457;4777.00936600182;2019.40248203088;101.270711956369;6823.91642372099;2874.64414354688;8062.03625517957;174.076009924841;216.682686930535;10156.0723644092;45099.1252304825;2546.07440629549;16144.1025588457;1463.71131262850;4207.84785011943;6818.25324994921;10301.1059781683;2219.06862635326;187.758161303561;851.842301062716;910.944402998411;1599.44759133517;8648.28501106356;312.689429486028;45458.2737977379;13118.5344792181;3957.55185568206;14492.5475990514;644.879022387121;20410.3186382312;4.35040216186109;3143.45238331949;47427.2010617580;12961.0343814753;62344.4220978493;1947.69460668105;19547.8951977750;650.531447840302;270.286993237899;5591.06177837626;745.546365782336;24847.2215200118;2313.00543961148;1072.64189290359;4418.71451126541;72.5709632981172;7760.77810070627;1044.66732477290;6148.85237354953;32593.7293789504;34543.6774842099;3654.56628233655;106.832321961343;3171.57019368392;129.042776669848;8185.29520123870;2187.56930638114;155.974989173905;21873.1821959188;7410.03652162160;6157.04603555819;952.482425116897;546.905193046492;11171.9138570250;807.360820958677;75.1520507287411;21591.2188492477;369.340152435746;6761.66232232030;88.8128841899438;1130.39410635612;8183.98966911780;830.917297755489;1225.43934212433;33703.7879111664;10732.4608246505;58780.1184332069;9204.49337452283;997.119528322219;1837.17401689850;10732.6446131144;35263.7868772332;8849.24774486090;6199.13377181841;7671.55722758146;1023.67448592003;3116.92508497182;969.882827364569;3249.11305070432;10521.2945023075;8258.18541663562;440.568908436443;28861.3917649164;3691.78459768493;138.764369544586;4888.25172141423;727.103899796062;2443.19693115649;21996.4796742860;10409.3941669304;1998.04539630500;120.250066519542;12740.4597813740;840.785650299987;15915.1021444245;2260.28751586894;13785.5014613815;161.155580848781;4314.07164519933;21945.4320927447;241.768278472012;6700.26342907603;856.078143051645;2924.49948258501;952.597701394034;12025.1686895054;2430.58677998361;326.667149573219;21.0140697305508;40.6828639978329;3737.30719502780;119.503581722563;32906.5205385591;973.588694452560;32561.9777219138;5229.04674216111;2772.51782962836;677.305110187763;3601.71030879117;3527.53790019961;47786.9049140240;17610.4352068873;20765.2018858025;1614.78999801182;21614.9180620863;1068.07540136927;6598.68663868651;2976.14004555285;11059.3051442815;1579.80012746548;5653.45698057510;22990.6530186435;10.6057752111420;26764.9487861469;1806.74720439678;3474.31693800776;39.4273802720963;40883.1791481618;9645.82333929081;3751.70090382161;30.1248726513399;12515.6129331188;3923.50073953332;622.591028555623;9860.86747368756;9505.27940859627;4105.08672009148;32719.8397991178;11661.1111948473;396.764346310129;23135.2180160669;5236.42005487130;3519.45936260418;1610.70857659152;8876.15191216419;902.918167219423;1391.81716331371;6650.21506830929;6382.20426237205;144.493098102069;3263.23854454407;1704.00546129003;9740.93759188783;5769.44041732987;4319.13547536559;3647.17532147698;313.101779324762;945.583839776315;173.766054428707;3544.50759852689;10958.5887829624;391.876202255502;1073.72979101594;567.876070897305;527.147333764202;1935.98156248304;3805.23574224369;755.352594399286;3613.23653437515;85.2075786193464;29923.5123999701;3703.42163546433;5432.57107055221;30620.7758692364;8289.78527840860;7518.32153625651;63.8286573275342;8072.59103487234;337.469476554425;845.589025461187;127.565091029653;1935.57928493651;103.352524591250;77692.3767220978;13611.0729267906;34384.2508806384;13011.5347380482;11953.9991330196;1880.17021989391;283.820998861444;477.569168578911;2930.42971295615;1515.28177454545;5643.44987435864;31621.9404336326;14958.8200545361;16467.4623000540;54240.2913891658;8134.80371077672;33695.6937722507;44.5648522458954;12.5879391529883;49602.7764840997;47.9061295982864;2573.76691889847;556.062016805154;604.200252145542;49.0633136224447;3703.70237249171;14947.3457327617;1001.72478385084;18032.9778666557;10654.0452014770;17721.3573264932;1754.79886806216;196.901856808640;8096.80223582023;900.666156916522;10595.9376925352;1190.70524733699;10257.6761625457;3960.62019790801;453.754254325754;7494.31829702656;10880.7492831947;729.371635651539;1919.67847488884;1670.14695574246;9673.61229695553;886.235895513374;13080.0145094224;2826.19949338230;9458.84095297002;2727.45569075997;311.797175607440;9423.31922079694;1713.73044447340;1920.81047127593;40135.7393969108;9043.88636184616;1866.27320995577;4211.24080609996;1296.54942652726;4982.73660541925;20046.2858459275;25744.7053077348;10585.3863759489;21256.7004944844;22.5352653346328;30494.1249763361;241.452795696223;15304.6511417976;48114.1715128015;1111.60272501404;5091.44044634024;1007.47669117062;1710.73554958435;3330.27770842741;207.365188077309;26852.2537445976;5777.36806025361;6704.22134467083;2701.18117160608;2.00507273636329;13352.4812097431;0.907240266770934;4758.38577827748;4444.87761412509;7467.54222100023;128.639685140205;1586.92957205472;7814.02766841496;324.928362415278;3034.40704471164;4664.40202445102;13703.2463495035;2264.43298524889;19944.0116066226;5.11143562777346;22.9148043483035;28945.3960583689;2598.06030132304;0.0815079742566257;8461.55444511546;224.426563730341;19738.3798678178;10694.0735860203;850.132332938910;6048.15016492004;3211.44466966277;19116.4127064279;597.678670047809;6535.73298467209;453.867652644002;7738.31913273873;41570.1636858018;8536.51169740335;712.449232972367;4117.29488823467;1810.37787851584;17284.9789062083;1733.98303891570;14998.6026817744;18.9958297310497;3392.16874113234;10130.4240020873;41.6241003843745;3603.50424257267;18537.2297231986;1208.20637792925;330.669560996489;8827.25576412733;14.0874026293559;35959.7073253270;45282.8512592518;13851.4852638119;9811.54079817312;13760.0484081438;29771.0105687787;830.754316719414;25414.2173396372;121.481947241264;6194.73953033198;0.0495857728748792;86.6924119968785;1430.02759448629;21983.2845030505;19.2006842280217;9231.85087403981;30214.9544575596;1850.77411022385;26481.7928863149;276.714882477516;1415.76035367308;515.065134303749;13199.9944923709;40979.2247357604;55673.5119876589;2600.71487497375;17466.9420228415;4046.59150015548;1010.29524598263;190.572432496169;5051.44346566919;6037.34480534988;3873.74196846237;4191.02009636779;1811.62328433019;10995.2161136718;4365.33853975802;62939.3932221131;11309.4640386926;13384.6771193779;28.0675614479710;16599.3849257246;1378.05214593698;5742.48588710953;3180.60939373089;3081.78820800924;3100.01812496317;8012.27525313197;1675.49183698139;258.845517115501;1675.54675956292;9075.15343008774;1006.90378242481;60.8713303582577;17539.9681794733;454.416562812155;180.845058414647;13720.7445217573;19189.5270145328;964.154159201088;622.447932920812;2537.58073690692;7968.44381257595;36424.1931512937;149.403441459153;10962.7866199096;514.927768612153;264.068810070305;4761.71621737160;3088.65588970407;12549.7126835980;23491.4787494832;12053.1363939620;20044.1409806352;35.4865502210510;1691.27323751107;1354.31899633341;18522.2063956908;6077.25375944456;1930.82124956869;80.3218959194340;10428.0883342746;7638.40105292208;1719.76333053788;1214.11269824186;1219.78647559111;5318.01577345097;1068.24548211454;2651.03095925034;8036.15700750726;14478.5432843848;10770.6130156016]

% Method I
tic
count1 = 0;
for i = 1 : length(nodetraffic)
    if (standard_deviation_distance(nodetraffic, nodetraffic(i)) > 6)
        count1 = count1   1;
    end
end
count1
toc

%% Method II
tic
A = arrayfun(@(x) standard_deviation_distance(nodetraffic, x), nodetraffic);
count2 = length(A(A > 6))
toc

function dist = standard_deviation_distance(v, x)  
    standard_deviation = std(v);
    dist = (x - mean(v)) / standard_deviation;
end
count1 =
    24
Elapsed time is 0.416022 seconds.
count2 =
    24
Elapsed time is 0.493096 seconds.

CodePudding user response:

If I understand correctly, you only need

A = (nodetraffic-mean(nodetraffic))/std(nodetraffic);
count = sum(A>6);
  • Related