How to build a graph using stem for a given equation?

As I understand it, the program stumbles over calling the delta function and builds one point. How can I display the desired graph without making the code too heavy?
Main script:
a1=1.7;
b1=9;
subplot(221);
n1=0:20;
x1=a1*delta(n1-b1);
stem(n1, x1);
File delta function (its use is mandatory):
function [ d ] = delta( n )
if n == 0
d = 1;
else
d = 0;
end
end

 Réponse acceptée

Voss
Voss le 16 Mar 2024
Modifié(e) : Voss le 16 Mar 2024
Your delta function makes d a scalar. Instead d should be the same size as n, with value 1 where n is 0 and value 0 everywhere else. If you can modify the delta function, do it.
a1=1.7;
b1=9;
% subplot(221);
n1=0:20;
x1=a1*delta(n1-b1);
stem(n1, x1);
function d = delta( n )
d = zeros(size(n)); % initialize d to be an array of 0 the same size as n
d(n == 0) = 1; % set d to 1 where n is 0
end

2 commentaires

Thank you a lot! I got 2 good answers but this one is pretty universal for writing file-functions!
You're welcome!

Connectez-vous pour commenter.

Plus de réponses (1)

Since your delta function does not support array inputs, you must use something like
x1=a1*arrayfun(@(n1)delta(n1-b1),n1)
instead of
x1=a1*delta(n1-b1);

Catégories

En savoir plus sur MATLAB dans Centre d'aide et File Exchange

Question posée :

le 16 Mar 2024

Commenté :

le 16 Mar 2024

Community Treasure Hunt

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

Start Hunting!

Translated by