MATLAB: Code sigadd help me

function [x, n] = signalplus(s1, n1, s2, n2)
% n1 is the sample positions of s1
% n2 is the sample positions of s2
i understood it but i can write in matlab
example:
s1=[2 5 7]; n1=2
s2=[3 2 6]; n2=3
s=s1 + s2 = [3 4 11 7]
thank you 🙂
i find a code but it not work , i use : sigadd([2 5 7],2,[3 2 6],3) error
function [y,n] = sigadd(x1,n1,x2,n2)
% implements y(n) = x1(n)+x2(n)
% -----------------------------
% [y,n] = sigadd(x1,n1,x2,n2)
% y = sum sequence over n, which includes n1 and n2
% x1 = first sequence over n1
% x2 = second sequence over n2 (n2 can be different from n1)
%
n = min(min(n1),min(n2)):max(max(n1),max(n2)); % duration of y(n)
y1 = zeros(1,length(n)); y2 = y1; % initialization
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1; % x1 with duration of y
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2; % x2 with duration of y
y = y1+y2; % sequence addition

Best Answer

Syren - presumably you found sigadd.m from the submission by John Proakis at DSP Using MATLAB. In the Chapter 2 folder (CHAP_02/) there is an example file called ex020200.m which invokes the sigadd function as
[x1,n1] = sigadd(2*x11,n11,-3*x12,n12);
where each of the input vectors are 1x13 arrays. I suspect that you will need to do something similar in your example. The n1 and n2 inputs (your 2 and 3) should be arrays such as
n1 = [1 2 3];
n2 = [0 1 2];
with
sigadd([2 5 7],[1 2 3],[3 2 6],[0 1 2])
producing the desired output of
ans =
3 4 11 7
Try the above and see what happens!
Related Question