convolution of 2 discrete signal
122 次查看(过去 30 天)
显示 更早的评论
hi. this is my code:
clc
clear all
n=-2:1:12;
nx = -2:8 ; nh = 0:12; % Set time vectors for x and h
x = usD(n-1) - usD(n-6); % Compute values of x
h = tri((nh-6)/4); % Compute values of h
y = conv(x,h); % Compute the convolution of x with h
ny=(nx(1) + nh(1)) + (0:(length(nx) + length(nh) - 2)) ;
subplot(3,1,1) ; stem(nx,x,'k','filled');
xlabel('n') ; ylabel('x'); axis([-2,20,0,4]);
subplot(3,1,2) ; stem(nh,h,'k','filled') ;
xlabel('n') ; ylabel('h'); axis([-2,20,0,4]);
subplot(3,1,3) ; stem(ny,y,'k','filled');
xlabel('n') ; ylabel('y'); axis([-2,20,0,4]);
function z = usD(n)
z = double(n >= 0); % Set output to one for non-
% negative arguments
I = find(round(n) ~= n); % Index non-integer values of n
z(I) = NaN ;
end
function d= tri(n)
....
....
....
end
in this code i want to stem conv(x,h). i need to define function tri in the last. can u help me.
the result:
1 个评论
KALYAN ACHARJYA
2019-7-27
编辑:KALYAN ACHARJYA
2019-7-27
Please do share tri function file. Is the x and h having same length?
回答(1 个)
Pramil
2024-8-21
Hi Hadimargo,
Based on your code, and result image, it looks like you want to create a triangular waveform. Here’s how you can define the "tri" function:
function d = tri(n)
% Create triangular waveform centered at zero
d = max(1 - abs(n), 0);
end
This function will generate a triangular waveform with a peak value of 1 and a base width of 2 units. You can adjust the function as needed to fit your specific requirements.
Here’s your complete code with the "tri" function defined:
clc
clear all
n = -2:1:12;
nx = -2:12; nh = 0:14; % Set time vectors for x and h
x = usD(n-1) - usD(n-6); % Compute values of x
h = tri((nh-6)/4); % Compute values of h
y = conv(x,h); % Compute the convolution of x with h
ny = (nx(1) + nh(1)) + (0:(length(nx) + length(nh) - 2));
subplot(3,1,1); stem(nx,x,'k','filled');
xlabel('n'); ylabel('x'); axis([-2,20,0,4]);
subplot(3,1,2); stem(nh,h,'k','filled');
xlabel('n'); ylabel('h'); axis([-2,20,0,4]);
subplot(3,1,3); stem(ny,y,'k','filled');
xlabel('n'); ylabel('y'); axis([-2,20,0,4]);
function z = usD(n)
z = double(n >= 0); % Set output to one for non-negative arguments
I = find(round(n) ~= n); % Index non-integer values of n
z(I) = NaN;
end
function d = tri(n)
% Create triangular waveform centered at zero
d = max(1 - abs(n), 0);
end
This should give you the desired convolution plot.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Subplots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!