MATLAB

2012-10-22 33 views
5

में क्वाड का उपयोग करने के बारे में मुझे quad फ़ंक्शन के साथ एक अजीब समस्या आती है।MATLAB

Error using quad (line 75) 
The integrand function must return an output vector of the same length as the input vector. 
yteor(k) = quad(@(q)(exp(-(q).^2).*q.^2/(k.^2+1)), 0, 1); 

यहाँ q और कश्मीर scalars हैं: मैं quad उपयोग कर रहा था सरल अभिन्न गणना करने के लिए, और यह 10 से 20 बार के लिए काम किया है, तो मैटलैब निम्न त्रुटि जारी करता है। मुझे यह नहीं मिल सकता कि क्या गलत है और यह कई घंटे पहले क्यों काम करता था।

संपादित

यहाँ (मैटलैब जीएनयू क्लोन) निम्नलिखित स्निपेट सप्टक पर मेरे लिए काम करता है मेरे कोड

for k=1:100, 
    xteor(k)=step*k; 
    yteor(k)=quad(@(q)(exp(-(q).^2).*q.^2/((step.*k+1).^2)),0,1); 
end plot(xteor,yteor,'r'); 
+2

त्रुटि संदेश बहुत आत्म-व्याख्यात्मक लगता है। क्या आप अपना कोड दिखा सकते हैं? (आदर्श रूप से, काम कर रहे हैं और काम नहीं कर रहे हैं) – FabienAndre

+0

पूरा कोड बहुत बड़ा है इसलिए मैं उस भाग को भेजूंगा जो ग्राफ को एकीकृत और साजिश करेगा: –

+0

के = 1: 100 xteor (k) = step * k; yteor (k) = quad (@ (q) (exp (- (q)।^2)। * Q।^2/((चरण। * के + 1)।^2)), 0,1); अंत साजिश (xteor, yteor, 'r'); –

उत्तर

1

है

step = 1; 
xteor = zeros(100,1); 
yteor = zeros(100,1); 

for k=1:100, 
    xteor(k)=step*k; 
    yteor(k)=quad(@(q)(exp(-(q).^2).*q.^2/((step.*k+1).^2)),0,1); 
end 
plot(xteor,yteor,'r'); 
pause 

मेरे परिकल्पना है कि अपने त्रुटि है आपके कोड में पहले कुछ और हो रहा है (शायद step से संबंधित एक स्केलर नहीं है?)। इस लाइन पर ध्यान केंद्रित करने के बजाय त्रुटि उत्पन्न होती है। त्रुटि प्रकट होने से ठीक पहले आपने जो कुछ बदल दिया है उसे खोजने का प्रयास करें।

+0

हाँ, धन्यवाद। मैंने कोड को देखा और पाया कि कहीं मैंने कभी-कभी "।" रखा))) वैसे भी मदद के लिए बहुत बहुत धन्यवाद !!! –

+0

एसओ में आपका स्वागत है! चूंकि आप नए हैं, इसलिए आप यह [लिंक] (http://meta.stackexchange.com/a/5235/187716) देखना चाहेंगे। – FabienAndre