/ / MATLAB पर एक फ़ंक्शन के अंदर एक चर बढ़ाना - matlab, सिग्नल-प्रोसेसिंग

MATLAB पर एक फ़ंक्शन के अंदर एक चर बढ़ाना - matlab, सिग्नल-प्रोसेसिंग

मेरा लक्ष्य निम्नलिखित ग्राफ में सक्षम हो रहा है:

x(n)= delta(n)+delta(n-1)+delta(n-2)+….+delta(n-10)+delta(n-11)

मैंने यह कोड लिखा है:

n = -15:15
e(m) = dirc(n(m));
k = 1
for m = 1 : length(n)
while k < 12
e_1(m) = dirc(n(m)-k);
k = k + 1
end
e(m) = e(m) + e_1(m)
end

subplot(4,4,5);
stem(n,e,"m","markersize",3,"linewidth",1)
xlabel("n")
ylabel("delta[n]")
title ("(e)")

और मैंने लिखा है कि समारोह इस प्रकार है:

function output = dirc(input)
output = 0;
if input == 0
output = 1;
end
end

त्रुटि है

सूचकांक मैट्रिक्स आयामों से अधिक है

जैसा कि आप देख सकते हैं, यह एक समापन समारोह है, मैं "अंततः इस तरह से कुछ को ग्राफ करने में सक्षम होना चाहता हूं:

x(n)= delta(n)+delta(n-1)+delta(n-2)+….

उत्तर:

जवाब के लिए 2 № 1

आप हमें नहीं दिखा रहे हैं m दूसरी पंक्ति में है, जो आपकी समस्याओं का एक संभावित स्रोत है। इसके अलावा, आपको "वेक्टर को पूर्व-आवंटित करना होगा" e यदि आप एक लूप में इसके मूल्यों को बढ़ाना चाहते हैं, तो यह आपको आउट-ऑफ-बाउंड त्रुटियां भी दे सकता है।

अपने शेष कोड के लिए, आप प्रतिस्थापित कर सकते हैं dirc(input) बस के साथ input==0परिणामी तार्किक मूल्य संख्यात्मक के साथ संगत होंगे 0 तथा 1 (मामले में input स्केलर है, जो आपके लिए मामला लगता है)।

तथ्य की बात के रूप में, आप जो प्राप्त करने की कोशिश कर रहे हैं वह फ़ंक्शन है

kmax = 11;
xfun = @(n) ismember(n,0:kmax);  %// anonymous function
x(n) = xfun(n);                  %// evaluate at any specific value n

या यदि आप गणना करना चाहते हैं x(n) के कई मूल्यों के लिए n तुरंत:

kmax = 11;
xfun = @(n) sum(bsxfun(@eq,n(:),0:kmax),2);%// anonymous function
xvec = xfun(-15:15);                       %// evaluate at every n simultaneously