2011-11-15 15 views
5

के साथ एक रैखिक प्रणाली मॉडलिंग मैं पाइथन के साथ बंद-लूप, रैखिक, समय-परिवर्तनीय प्रणाली (विशेष रूप से लॉक पीएलएल सन्निकटन) अनुकरण/मॉडल करना चाहता हूं।पायथन

मॉडल के भीतर प्रत्येक उप-ब्लॉक में ज्ञात स्थानांतरण फ़ंक्शन है जो जटिल आवृत्ति H(s) = K/(s * tau + 1) के संदर्भ में दिया जाता है। मॉडल का उपयोग करके, मैं देखना चाहता हूं कि सिस्टम प्रतिक्रिया के साथ-साथ शोर प्रतिक्रिया प्रभावित होती है क्योंकि पैरामीटर (उदा। वीसीओ लाभ) बदल जाते हैं। इसमें बोड प्लॉट्स और रूट-लोकस प्लॉट्स का उपयोग शामिल होगा।

नौकरी पाने के लिए मुझे क्या पाइथन मॉड्यूल की तलाश करनी चाहिए?

+0

इलेक्ट्रिकल इंजीनियरिंग डिजाइन और लागू करने रेखीय प्रणाली, उनके सिमुलेशन और मॉडलिंग के लिए नहीं के बारे में प्रश्नों के लिए है से लिया गया है; यह स्टैक ओवरफ़्लो के लिए एक विषय है। –

+1

अफसोस की बात है, मैथजेक्स/लाटेक्स स्टैक ओवरफ़्लो पर उपलब्ध नहीं है; इसका उपयोग करने के लिए धन्यवाद लेकिन मैं माइग्रेशन के लिए इसे संपादित कर रहा हूं। –

+0

जबकि मुझे विश्वास नहीं है (या किसी भी पायथन मॉड्यूल) में "डिब्बाबंद" बोड या रूट-लोकस प्लॉट होते हैं, तो आप [matplotlib] का उपयोग करके अपने स्वयं के उपयुक्त 2-डी प्लॉट उत्पन्न करने में सक्षम होना चाहिए (http: //matplotlib.sourceforge पायथन के साथ .net /)। – mctylr

उत्तर

12

मुझे पता है कि यह थोड़ा पुराना है, लेकिन एक खोज ने मुझे इस प्रश्न पर लाया। मैंने इसे एक साथ रखा जब मुझे इसके लिए एक अच्छा मॉड्यूल नहीं मिला। यह ज्यादा नहीं है, लेकिन अगर कोई और खुद को यहां पाता है तो यह अच्छी शुरुआत है।

import matplotlib.pylab as plt 
import numpy as np 
import scipy.signal 

def bode(G,f=np.arange(.01,100,.01)): 
    plt.figure() 
    jw = 2*np.pi*f*1j 
    y = np.polyval(G.num, jw)/np.polyval(G.den, jw) 
    mag = 20.0*np.log10(abs(y)) 
    phase = np.arctan2(y.imag, y.real)*180.0/np.pi % 360 

    plt.subplot(211) 
    #plt.semilogx(jw.imag, mag) 
    plt.semilogx(f,mag) 
    plt.grid() 
    plt.gca().xaxis.grid(True, which='minor') 

    plt.ylabel(r'Magnitude (db)') 

    plt.subplot(212) 
    #plt.semilogx(jw.imag, phase) 
    plt.semilogx(f,phase) 
    plt.grid() 
    plt.gca().xaxis.grid(True, which='minor') 
    plt.ylabel(r'Phase (deg)') 
    plt.yticks(np.arange(0, phase.min()-30, -30)) 

    return mag, phase 

f=scipy.signal.lti([1],[1,1]) 
bode(f) 

संपादित करें: मैं यहाँ वापस हूँ क्योंकि किसी को इस उत्तर upvoted, आप Control Systems Library कोशिश करनी चाहिए। उन्होंने मिलान वाक्यविन्यास और सबकुछ के साथ मैटलैब नियंत्रण प्रणाली टूलबॉक्स का बड़ा हिस्सा लागू किया है।

+0

मैंने नियंत्रण सिस्टम लाइब्रेरी के संपादन के बाद यह उत्तर स्वीकार कर लिया। – benpro

-1

scipy और numpy मॉड्यूल आपके आवेदन के लिए उपयुक्त हैं।

+1

मुझे पता है और scipy और numpy का उपयोग करें, लेकिन निश्चित रूप से रैखिक प्रणाली मॉडलिंग के लिए कुछ और विशिष्ट और लक्षित है। यह numpy/scipy का उप-मॉड्यूल हो सकता है ??? – benpro

3

जैसा कि @ मैट ने कहा, मुझे पता है कि यह पुराना है। लेकिन यह मेरी पहली Google हिट के रूप में आया, इसलिए मैं इसे संपादित करना चाहता था।

आप मॉडल रैखिक, समय परिवर्तक प्रणाली के लिए scipy.signal.lti का उपयोग कर सकते हैं। यह आपको lti.bode देता है।

एच (एस) = (जैसा कि^2 + बीएस + सी)/(डीएस^2 + ईएस + एफ) के रूप में एक आवेग प्रतिक्रिया के लिए, आप h = scipy.signal.lti([A,B,C],[D,E,F]) दर्ज करेंगे। बोड प्लॉट प्राप्त करने के लिए, आप plot(*h.bode()[:2]) करेंगे।

3

मैं इस तरह से बाहर काम कर रहे, अजगर-नियंत्रण का उपयोग बोडे भूखंडों मिला है।

from matplotlib.pyplot import * # Grab MATLAB plotting functions 
from control.matlab import * # MATLAB-like functions 


# Transfer functions for dynamics 
G_modele = tf([1], [13500, 345, 1]); 

# Use state space versions 
G_modele = tf2ss(G_modele); 

figure(1); 
bode(G_modele, dB=1); 
show(); 

कोड मुख्य रूप से इस उदाहरण जो बहुत व्यापक

http://www.cds.caltech.edu/~murray/wiki/index.php/Python-control/Example:_Vertical_takeoff_and_landing_aircraft