Effacer les filtres
Effacer les filtres

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

2 vues (au cours des 30 derniers jours)
MAWE
MAWE le 10 Juil 2023
Réponse apportée : Anuj le 10 Juil 2023
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?

Réponses (1)

Anuj
Anuj le 10 Juil 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.

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by