Is my matlab code for the sinc signal below correct.

I want to create and plot the signal equation below in matlab. The Coefficients ak are uniformly distributed in [−1, 1]. c is a constant.
Here is my code:
%************ Variable declaration******************
t = -20:0.1:20;
p = -10:1:10
data = 0;
signal = zeros(1,length(t)); %for spped allocations
c = 25 % constant
ak = -1 + 2*rand(1,21); % numbers in the interval (a,b) with the formula r = a + (b-a).*rand(N,1).
count = 1;
%********************************************************************************************
for i = t
for k = p
data = data + c*ak(k+11)*sinc(i-k);
end
signal(counter) = data;
counter = counter + 1;
end
plot(t,signal);
Thanks in advance.

 Accepted Answer

%************ Variable declaration******************
rng('default')
t = -20:0.1:20;
signal = zeros(1,length(t)); %for spped allocations
c = 25; % constant
ak = -1 + 2*rand(1,21); % numbers in the interval (a,b) with the formula r = a + (b-a).*rand(N,1).
%********************************************************************************************
for i = 1:length(t)
T = t(i);
data = 0;
for k = -10:1:10
data = data + ak(k+11)*sinc(T-k);
end
signal(i) = c*data;
end
plot(t,signal)

More Answers (1)

%************ Variable declaration******************
t = -20:0.1:20;
p = -10:1:10;
signal = zeros(1,length(t)); %for spped allocations
c = 25; % constant
ak = -1 + 2*rand(1,21); % numbers in the interval (a,b) with the formula r = a + (b-a).*rand(N,1).
%********************************************************************************************
for i = 1:length(t)
data = 0;
for k = 1:length(p)
data = data + c*ak(k)*sinc(t(i)-p(k));
end
signal(i) = data;
end
plot(t,signal);

6 Comments

Thanks Chunru.
I see your modifications and thanks for that.
Could you confirm that the implementation is right for the equation above.
My code was giving me different graphs each time I run the code and made me think it was wrong the way I implemented.
ak = -1 + 2*rand(1,21);
The above line generate different random numbers for each run so that you will see different results. If you want to have same results:
rng('default'); % this will reset the seed number for random number generator
ak = -1 + 2*rand(1,21);
In the code above, "data" has to be reset to 0 after the k-loop.
Further
data = data + c*ak(k)*sinc(t(i)-p(k));
instead of
data = data + c*ak(k)*sinc(i-p(k));
Otherwise the code is wrong.
@Torsten Yes. You are right. Corrected.
Thanks so much @Torsten and @Chunru: I accept the solutions that you have provided.
Are you able to help my other question please?

Sign in to comment.

Categories

Find more on Mathematics in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!