2010-04-28 9 views
6

में कस्टम MATLAB फ़ंक्शंस को कार्यान्वित करना मैं सिमुलिंक में एक कस्टम MATLAB फ़ंक्शन का उपयोग करना चाहता हूं। अब तक मैंने इसे एम्बेडेड MATLAB फ़ंक्शन ब्लॉक डालकर किया है। हालांकि, यदि कस्टम फ़ंक्शन में कोई अन्य कस्टम फ़ंक्शन होता है तो संकलन प्रक्रिया विफल हो जाती है।सिमुलिंक

function [c, d, iterationsCount] = decodeLDPC(y, H, variance) 
Lci = initializeLq(y, H, variance); 
Lr = getLr(Lci); 
[Lq, c] = getLq(Lci, H, Lr); 
iterationsCount = 1; 

while(sum(mod(c * H', 2)) ~= 0) 
    Lr = getLr(Lq); 
    [Lq, c] = getLq(Lq, H, Lr); 
    iterationsCount = iterationsCount + 1; 
end; 
G = getGeneratorMatrix(H); 
d = c/G; 

जहां initializeLq और getLr कस्टम कार्यों के रूप में अच्छी तरह से कर रहे हैं:

यहाँ समारोह के उदाहरण मैं अनुकरण में एम्बेड करने के लिए कोशिश कर रहा हूँ है।

क्या सिमुलेशन में उपरोक्त फ़ंक्शन को लागू करने का कोई तरीका है?

+0

मुझे लगता है कि माइकट का जवाब सही है, लेकिन मैं आपको यह पेशकश करता हूं: अपने मॉडल में एम्बेडेड MATLAB फ़ंक्शन ब्लॉक का उपयोग न करें क्योंकि यह ब्लॉक मॉडल को धीरे-धीरे चलाने का कारण बनता है। – Elmoya

+0

यदि आपका मॉडल धीरे-धीरे चल रहा है, तो आप ईएमएल ब्लॉक को स्टेटफ्लो आरेख के साथ लपेटना चाहेंगे। यह हर समय इनपुट और आउटपुट की प्रतिलिपि को खत्म कर देगा-चरण जो ईएमएल कार्यों को स्टेटफ्लो आरेखों के बाहर कर सकता है (MATLAB के पुराने संस्करणों में कम से कम) कम कुशल। –

उत्तर

1

आपको ईएमएल ब्लॉक से किसी बाहरी MATLAB फ़ंक्शंस को कॉल करने के लिए eml.extrinsic कमांड का उपयोग करने की आवश्यकता है। उदाहरण के लिए, यदि आप अपने EML समारोह के शीर्ष पर इस डाल सकते हैं,

eml.extrinsic('getLr', 'initializeLq'); 

उन कार्यों के नाम से जाना अनुमति देने के लिए। अधिक जानकारी के लिए, documentation

संबंधित मुद्दे