MATLAB How can I optimize my MATLAB program to reduce processing time?

  • Thread starter Thread starter EngWiPy
  • Start date Start date
  • Tags Tags
    Matlab Program
AI Thread Summary
The discussion centers on optimizing a MATLAB code that currently relies heavily on for loops, resulting in slow performance when calculating four N-by-N matrices \Phi^{(i,j)}. The matrices are defined by a specific formula involving complex conjugates and a sinc function, with parameters that include vectors f and C, both of size N-by-1, where N can be as large as 1024. The user seeks guidance on how to rewrite the code using vectorization techniques to minimize the number of for loops and improve efficiency. Key points include the need for vectorized operations to replace nested loops and the importance of understanding the mathematical definitions of the involved variables to implement the solution effectively.
EngWiPy
Messages
1,361
Reaction score
61
Hello,

I have a MATLAB code that contains a lot of for loops, and hence it is very slow, and takes hours and hours to get just initial results, which is very inefficient. I know writing the program in terms of vectors will fasten the process, however, I do not know how to write my program that way, and I hope one of you guys will help me.

Basically, I need to find four matrices \Phi^{(i,j)} for i,j=1,2, where each matrix is of size N-by-N. The entries are given by:

[\Phi^{(i,j)}]_{k,m}=C_i^*(f_k)C_j(f_m)\exp\left(j\pi\vartheta_{k,m}^{(i,j)}\right)sinc\left(\vartheta_{k,m}^{(i,j)}\right)

where

\vartheta_{k,m}^{(i,j)}=f_ma_i-f_ka_j+\frac{m-k}{T},\,\,\,k,m=0,1,\ldots,N-1

How can I do that in vector form, with the least number of for loops?

Thanks in advance
 
Physics news on Phys.org
How big does N get?

What are f, C, and C*?
 
Last edited:
SteamKing said:
How big does N get?

It goes as large as 1024.
 
What are f, C,and C*?
 
SteamKing said:
What are f, C,and C*?

It is enough I guess if you consider f as a vector of size N-by-1. So, C is also a vector of size N-by-1. The * means complex conjugation. Also consider a1 and a2 as any numbers, it doesn't matter.
 

Similar threads

Back
Top