Azzera filtri
Azzera filtri

How can I implement this for loop in vector operation form?

3 visualizzazioni (ultimi 30 giorni)
I have this for loop that I would like to implement more efficiently
clear all;
clearvars;
N = 5;
Rs = 100*10^6;
Ts = 1/Rs;
J = 4;
Tsamp = Ts/J;
x = 2.*randi([0 1], N, 1)-1;
s = repelem(x,J);
n=0:N*J-1;
t = Tsamp.*n;
x_t=0;
%% This is the for loop
for nn=1:length(n)
x_t = x_t+ s(nn).*sinc(n-nn);
end
plot(t, x_t)
How can I do this?

Risposte (1)

Anuj
Anuj il 10 Lug 2023
Hi Mawe,
You can use parallel computing toolbox to use parfor to run the for loop parallelly, which would extensively reduce the computation time.
or you can vertorize the inner for loop step with the following code -
x_t = sum(s .* sinc(n - (1:length(n))));
By vectorizing the code, we avoid the need for an explicit for loop, which can improve the execution speed and efficiency of the code.
NOTE - The vectorized version assumes that the dimensions of s and n are compatible for element-wise operations.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Prodotti


Release

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by