These types of operations are useful for repetitive calculations. Vectorization of arrays can be done through array operators, which perform the same operation for all elements in the data set. How do you vectorize the following code? i = 0 Later on in this course, we will see that MATLAB has inherited these excellent vectorization techniques and syntax for matrix calculations from its high-performance ancestor, Fortran. Now doing the same thing, using array notation would yield, > tic, s = sum(x.^2) tocĪmazing! isn’t it? You get almost 3x speedup in your MATLAB code if you use vectorized computation instead of for-loops. > tic, s = 0 for i=1:n, s = s + x(i)^2 end, toc For example, consider the process of summation of a random vector in MATLAB, > n = 5e7 x = randn(n,1) Furthermore, it expresses algorithms in terms of high-level constructs that are more appropriate for high-performance computing. It can lead to shorter and more readable MATLAB code. Vectorization has important benefits beyond simply increasing speed of execution. One of the most important tips for producing efficient M-files is to avoid for -loops in favor of vectorized constructs, that is, to convert for-loops into equivalent vector or matrix operations. Relatively slowly-depending on what is inside the loop, MATLAB may or may notīe able to optimize the loop. This is true of the arithmetic operators *, +, -, \, / and of relational and logical operators. Since MATLAB is a matrix language, many of the matrix-level operations and functions are carried out internally using compiled C, Fortran, or assembly codes and are therefore executed at near-optimum efficiency. There is of course, a remedy for this inefficiency. There is a reason for this: for-loops and while-loops have significant overhead in interpreted languages such as MATLAB and Python.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |