पीडीएल::क्विकस्टार्टप - क्लाउड में ऑनलाइन

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

कार्यक्रम:

नाम


पीडीएल::क्विकस्टार्ट - पीडीएल सुविधाओं का त्वरित परिचय।

SYNOPSIS


मुख्य पीडीएल सुविधाओं का संक्षिप्त सारांश और उनका उपयोग कैसे करें।

वर्णन


परिचय
पर्ल एक बेहद अच्छी और बहुमुखी स्क्रिप्टिंग भाषा है, जो शुरुआती लोगों के लिए उपयुक्त है
तीव्र प्रोटोटाइपिंग की अनुमति देता है। हालाँकि हाल तक यह डेटा संरचनाओं का समर्थन नहीं करता था
इसे तेजी से संख्या क्रंचिंग करने की अनुमति दी गई।

हालाँकि, पर्ल v5 के विकास के साथ, पर्ल ने 'ऑब्जेक्ट्स' हासिल कर लिया। सीधे शब्दों में कहें तो उपयोगकर्ता
अपने स्वयं के विशेष डेटा प्रकारों को परिभाषित कर सकते हैं, और उनमें हेरफेर करने के लिए कस्टम रूटीन लिख सकते हैं
या तो निम्न स्तरीय भाषाओं (सी और फोरट्रान) में या पर्ल में ही।

PerlDL डेवलपर्स द्वारा इसका पूरा फायदा उठाया गया है। 'पीडीएल' मॉड्यूल पूर्ण है
पर्ल के लिए ऑब्जेक्ट-ओरिएंटेड एक्सटेंशन (हालाँकि आपको यह जानने की ज़रूरत नहीं है कि ऑब्जेक्ट क्या है
इसका उपयोग करें) जो बड़े एन-आयामी डेटा सेट, जैसे बड़ी छवियां, स्पेक्ट्रा, समय की अनुमति देता है
श्रृंखला, आदि को संग्रहित किया जाना है कुशलता और चालाकी की गई en सामूहिक. उदाहरण के लिए पीडीएल के साथ
मॉड्यूल में हम पर्ल कोड "$a = $b + $c" लिख सकते हैं, जहां $b और $c बड़े डेटासेट हैं (उदाहरण के लिए)
2048x2048 छवियां), और परिणाम केवल एक सेकंड के एक अंश में प्राप्त करें।

पीडीएल वैरिएबल (या 'पिडल्स' जैसा कि उन्हें जाना जाता है) एक विस्तृत श्रृंखला का समर्थन करते हैं
मौलिक डेटा प्रकार - सरणियाँ बाइट्स, लघु पूर्णांक (हस्ताक्षरित या अहस्ताक्षरित), लंबी हो सकती हैं
पूर्णांक, फ़्लोट्स या डबल परिशुद्धता फ़्लोट्स। और वस्तु-उन्मुख प्रकृति के कारण
पीडीएल नए अनुकूलित डेटाटाइप उनसे प्राप्त किए जा सकते हैं।

पीडीएल मॉड्यूल के साथ-साथ, जिसका उपयोग सामान्य पर्ल प्रोग्राम द्वारा किया जा सकता है, पर्लडीएल एक के साथ आता है
कमांड लाइन पर्ल शेल, जिसे 'perldl' कहा जाता है, जो कमांड लाइन संपादन का समर्थन करता है। में
विभिन्न पीडीएल ग्राफिक्स मॉड्यूल के साथ संयोजन से डेटा को आसानी से चलाया जा सकता है
के साथ और कल्पना की गई।

मदद
पीडीएल में व्यापक दस्तावेज़ शामिल हैं, जो दोनों के भीतर उपलब्ध हैं परल्डली or पीडीएल९४० गोले और
कमांड लाइन से, "pdldoc" प्रोग्राम का उपयोग करके। अधिक जानकारी के लिए इनमें से कोई भी प्रयास करें:

पीडीएल> सहायता सहायता
$ पीडीएलडीओसी

दस्तावेज़ की HTML प्रतियां भी उपलब्ध होनी चाहिए। उनका स्थान जानने का प्रयास करें
निम्नलिखित हैं:

pdl> foreach (नक्शा{"$_/PDL/HtmlDocs"}@INC ) { p "$_\n" if -d $_ }

पर्ल जानकारी का प्रकार और कैसे पीडीएल फैली उन
मौलिक पर्ल डेटा संरचनाएं अदिश चर हैं, उदाहरण के लिए $x, जो संख्याएँ धारण कर सकता है
या तार, सूचियाँ या अदिशों की सरणियाँ, जैसे @x, और अदिशों के साहचर्य सरणियाँ/हैश,
जैसे %एक्स।

पर्ल v5 पर्ल डेटा संरचनाओं और ऑब्जेक्ट्स का परिचय देता है। एक साधारण अदिश चर $x अब होगा
एक उपयोगकर्ता-परिभाषित डेटा प्रकार या पूर्ण विकसित ऑब्जेक्ट (यह वास्तव में एक संदर्भ रखता है (एक स्मार्ट)।
"पॉइंटर") लेकिन यह perlDL के सामान्य उपयोग के लिए प्रासंगिक नहीं है)

PerlDL के पीछे मूल विचार $x को संपूर्ण 1D स्पेक्ट्रम, या 2D रखने की अनुमति देना है
छवि, एक 3डी डेटा क्यूब, और इसी तरह बड़े एन-आयामी डेटा सेट तक। ये हो सकते हैं
एक ही बार में हेरफेर किया गया, उदा. "$a = $b + 2" प्रत्येक मान पर एक वेक्टर ऑपरेशन करता है
स्पेक्ट्रम/छवि/आदि.

आप शायद पूछ सकते हैं: "क्यों न प्रत्येक स्पेक्ट्रम को एक साधारण पर्ल @x स्टाइल सूची के रूप में संग्रहित किया जाए
पिक्सेल एक सूची आइटम है?" इसके दो प्रमुख उत्तर हैं स्मृति और गति. क्योंकि हम
जानें कि हमारे स्पेक्ट्रम में शुद्ध संख्याएं शामिल हैं, हम उन्हें एक ही ब्लॉक में कॉम्पैक्ट रूप से संग्रहीत कर सकते हैं
सी शैली संख्यात्मक सरणी के अनुरूप स्मृति की। इससे बहुत कम मेमोरी लगती है
समतुल्य पर्ल सूची। फिर मेमोरी के इस ब्लॉक को तेजी से जोड़ना आसान हो जाता है
रूटीन, या किसी अन्य सी फ़ंक्शन के लिए जो सरणियों से संबंधित है। परिणामस्वरूप perlDL बहुत है
तेज़ --- उदाहरण के लिए कोई 2048*2048 छवि को ठीक उसी समय में गुणा कर सकता है
C या FORTRAN (मेरे SPARC पर 0.1 सेकंड) लेगा। इसका एक और फायदा यह है कि
सरल ऑपरेशन (उदाहरण के लिए "$x += 2") कोई भी इसकी परवाह किए बिना पूरे एरे में हेरफेर कर सकता है
इसकी आयामीता.

मुझे लगता है कि पर्लडीएल का उपयोग करते समय मानक पर्ल @x वेरिएबल्स के बारे में सोचना सबसे उपयोगी होता है
सामान्य "चीजों" की "सूचियाँ" और $x जैसे पीडीएल वेरिएबल्स को "सरणियों" के रूप में शामिल किया जा सकता है
सूचियों या हैश में. अक्सर मेरी पर्लडीएल स्क्रिप्ट में @x में स्पेक्ट्रा की एक सूची होती है,
या छवियों की एक सूची (या एक मिश्रण भी!)। या शायद किसी के पास हैश (जैसे %x) हो सकता है
छवियाँ... स्मृति ही एकमात्र सीमा है!

perlDL वैरिएबल डेटा प्रकारों की एक श्रृंखला का समर्थन करते हैं - सरणियाँ बाइट्स, लघु पूर्णांक हो सकती हैं
(हस्ताक्षरित या अहस्ताक्षरित), लंबे पूर्णांक, फ़्लोट या डबल सटीक फ़्लोट।

प्रयोग
इस कमांड का उपयोग करके PerlDL को आपकी पर्ल स्क्रिप्ट में लोड किया गया है:

पीडीएल का प्रयोग करें; # पर्ल स्क्रिप्ट में: मानक पर्लडीएल मॉड्यूल का उपयोग करें

बहुत सारे एक्सटेंशन मॉड्यूल भी हैं, उदा. पीडीएल::ग्राफिक्स::ट्राइडी। इनमें से अधिकांश (लेकिन
सभी नहीं क्योंकि कभी-कभी यह उचित नहीं होता) एक मानक परंपरा का पालन करें। अगर आप कहते हैं:

पीडीएल का उपयोग करें :: ग्राफिक्स :: ट्राईड;

आप मॉड्यूल से एक मानक सूची में सब कुछ आयात करते हैं। कभी-कभी आप ऐसा चाहते होंगे
कुछ भी आयात न करें (उदाहरण के लिए यदि आप हर समय OO सिंटैक्स का उपयोग करना चाहते हैं और आयात कर बचाना चाहते हैं)।
इनके लिए आप कहते हैं:

PDL::Graphics::TriD qw() का उपयोग करें;

और खाली "qw()" उद्धरणों को 'कुछ नहीं' अर्थ के रूप में पहचाना जाता है। आप एक निर्दिष्ट भी कर सकते हैं
सामान्य पर्ल तरीके से आयात करने के लिए कार्यों की सूची।

एक इंटरैक्टिव शेल भी है, "perldl" या "pdl2", देखें परल्डली या विवरण के लिए पीडीएल2।

सेवा मेरे बनाना a नई पीडीएल परिवर्तनशील
पीडीएल वैरिएबल बनाने के कुछ तरीके यहां दिए गए हैं:

$ए = पीडीएल [1..10]; # 1D सरणी
$ए = पीडीएल (1,2,3,4); # डिट्टो
$a = पीडीएल '[1 2 3 4]'; # डिट्टो
$बी = पीडीएल [[1,2,3],[4,5,6]]; # 2D 3x2 सरणी
$बी = पीडीएल '[1 2 3; 4 5 6]'; # डिट्टो
$बी = पीडीएल क्यू[1,2,3; 4,5,6]; # डिट्टो
$बी = पीडीएल <<न्यूपीडीएल # ठीक इसी प्रकार
[1 2 3]
[4 5 6]
न्यूपीडीएल
$सी = पीडीएल क्यू[1 -2]; # 2-तत्व पहेली जिसमें 1 और -2 शामिल हैं
$सी = पीडीएल क्यू[1 - 2]; # 2-तत्व पहेली जिसमें 1 और -2 शामिल हैं
$बी = पीडीएल 42 # 0-आयामी अदिश
$सी = पीडीएल $ए; # नई प्रतिलिपि बनाएं

$d = बाइट [1..10]; # "प्रकार रूपांतरण" देखें
$e = शून्य(3,2,4); # 3x2x4 शून्य-भरा सरणी

$c = rfits $फ़ाइल; # FITS फ़ाइल पढ़ें

@x = ( पीडीएल(42), शून्य(3,2,4), आरफिट्स($फ़ाइल)); # पीडीएल वेरिएबल्स की एक सूची है!

RSI पीडीएल() फ़ंक्शन का उपयोग स्केलर, सूची, सूची से पीडीएल वैरिएबल को प्रारंभ करने के लिए किया जाता है
संदर्भ, एक अन्य पीडीएल चर, या उचित रूप से स्वरूपित स्ट्रिंग।

इसके अलावा सभी पीडीएल फ़ंक्शन स्वचालित रूप से सामान्य पर्ल स्केलर को पीडीएल चर में परिवर्तित करते हैं
उड़ान पर।

(नीचे "प्रकार रूपांतरण" और "इनपुट/आउटपुट" अनुभाग भी देखें)

अंकगणित (और बूलियन भाव)
$ए = $बी + 2; $a++; $ए = $बी / $सी; # वगैरह।

$c=sqrt($a); $d = log10($b+100); # वगैरह

$e = $a>42; # वेक्टर सशर्त

$e = 42*($a>42) + $a*($a<=42); # कैप टॉप

$b = $a->log10 जब तक कोई ($a <= 0); # फ़्लोटिंग पॉइंट त्रुटि से बचें

$a = $a / (अधिकतम($a) - न्यूनतम($a));

$f = कहाँ($a, $a > 10); # जहां तत्वों का एक समूह लौटाता है
# जो शर्त सत्य है

$a प्रिंट करें; # स्ट्रिंग संदर्भ में $a इसे एन-आयामी प्रारूप में प्रिंट करता है

(और अन्य पर्ल ऑपरेटर/फ़ंक्शन)

सशर्त अभिव्यक्तियों में पिडल्स का उपयोग करते समय (यानी "यदि", "जब तक" और "जबकि" निर्माण)
केवल एक ही तत्व वाली पहेलियों की अनुमति है, उदा.

$ए = पीडीएल (1,0,0,1);
यदि $a-> तो "सेट है" प्रिंट करेंअनुक्रमणिका; (2)

ध्यान दें कि बूलियन ऑपरेटर सामान्य मल्टी-एलिमेंट पिडल्स में लौटते हैं। इसलिए
निम्नलिखित एक त्रुटि उत्पन्न करेगा

यदि $a > 3 है तो "ठीक है" प्रिंट करें;

चूँकि "$a > 3" 4 तत्वों वाला एक पहेली है। बल्कि सभी या कोई का परीक्षण करने के लिए सभी या कोई का उपयोग करें
तत्व शर्त को पूरा करते हैं:

यदि कोई $a>3 है तो "कुछ हैं > 3" प्रिंट करें;
"लघुगणक नहीं ले सकते" प्रिंट करें जब तक कि सभी $a>0 न हों;

कई पूर्वनिर्धारित फ़ंक्शन भी हैं, जिनका वर्णन अन्य मैन पेजों पर किया गया है। जाँच करना
पीडीएल::सूचकांक।

मैट्रिक्स कार्यों
'x' को मैट्रिक्स गुणन ऑपरेटर के रूप में हाईजैक कर लिया गया है। जैसे "$c = $a x $b";

perlDL पंक्ति-प्रमुख है, स्तंभ प्रमुख नहीं, इसलिए यह वास्तव में "c(i,j) = sum_k a(k,j) b(i,k)" है -
लेकिन जब मैट्रिक्स मुद्रित होंगे तो परिणाम सही दिखेंगे। बस याद रखें सूचकांक हैं
उलटा। जैसे:

$ए = [ $बी = [
[1 2 3 0] [1 1]
[1 -1 2 7] [0 2]
[1 0 0 1] [0 2]
] [1]
]

$c = [ देता है
[ 1 11 ]
[ 8 10 ]
[ 2 2 ]
]

नोट: स्थानांतरण() यह जो कहता है वही करता है और पंक्ति वैक्टर को इसमें बदलने का एक सुविधाजनक तरीका है
स्तंभ सदिश.

कैसे सेवा मेरे लिखना a सरल समारोह
उप डॉटप्रोडक्ट {
मेरा ($a,$b) = @_;
वापसी राशि ($a*$b);
}
1;

यदि आप PDL::AutoLoader का उपयोग कर रहे हैं तो dotproduct.pdl फ़ाइल में डालने पर यह स्वतः लोड हो जाएगा (देखें)
नीचे).

बेशक, यह फ़ंक्शन पहले से ही आंतरिक फ़ंक्शन के रूप में उपलब्ध है, PDL::Primitive देखें।

प्रकार रूपांतरण
के लिए डिफ़ॉल्ट पीडीएल() दोगुना है. रूपांतरण हैं:

$ए = फ्लोट($बी);
$सी = लंबा($डी); # "लॉन्ग" आम तौर पर 4 बाइट इंट होता है
$d = बाइट($a);

भी दोहरा(), छोटा(), उशॉर्ट(), इंडेक्स().

ध्यान दें: indx() रूटीन एक विशेष पूर्णांक प्रकार है
पीडीएल सूचकांक मान के लिए सही आकार है (आयाम आकार,
इंडेक्स, या ऑफेस्ट) जो या तो 32 बिट (लंबा) या हो सकता है
64 बिट (लंबी-लंबी) मात्रा इस पर निर्भर करती है कि पर्ल
32 बिट या 64 बिट समर्थन के साथ बनाया गया है।

सुविधाजनक शॉर्टहैंड की अनुमति देने के लिए ये रूटीन स्वचालित रूप से पर्ल सूचियों को परिवर्तित करते हैं:

$a = बाइट [[1..10],[1..10]]; # 2D बाइट सरणी बनाएं
$a = फ़्लोट [1..1000]; # 1डी फ्लोट ऐरे बनाएं

इत्यादि

मुद्रण
स्वचालित रूप से एन-आयामी प्रारूप में सरणी का विस्तार करता है:

$ ए प्रिंट करें;

$b = "उत्तर है = $a";

पुस्तकालय अनुभाग
पीडीएल के पास बहुत शक्तिशाली बहुआयामी स्लाइसिंग और सेक्शनिंग ऑपरेटर हैं; देखें
पीडीएल::स्लाइस(3) विवरण के लिए मैन पेज; हम यहां सबसे महत्वपूर्ण का वर्णन करेंगे।

पीडीएल अपनी पर्ल/सी विरासत को इस रूप में दर्शाता है कि सरणियाँ शून्य-ऑफ़सेट हैं। इस प्रकार एक 100x100 छवि होती है
सूचकांक "0..99,0..99"। (सम्मेलन यह है कि केंद्र पिक्सेल का (0,0) निर्देशांक पर है
(0.0,0.0). सभी पीडीएल ग्राफ़िक्स फ़ंक्शंस इस परिभाषा के अनुरूप हैं और यूनिट को छुपाते हैं
उदाहरण के लिए, PGPLOT FORTRAN लाइब्रेरी के ऑफसेट।

सामान्य सम्मेलन के बाद निर्देशांक (0,0) नीचे बाईं ओर प्रदर्शित होता है
एक छवि प्रदर्शित करना. ""print $a"" आदि का उपयोग करते समय यह ऊपर बाईं ओर दिखाई देता है।

सरल सेक्शनिंग पर्ल, पीडीएल::नाइसस्लाइस के लिए एक सिंटैक्स एक्सटेंशन का उपयोग करता है, जो आपको इसकी अनुमति देता है
पीडीएल में नल-विधि संशोधक के माध्यम से उपश्रेणियाँ निर्दिष्ट करें:

$b = $a->($x1:$x2,$y1:$y2,($z1)); # उपधारा लीजिए

यहां, $a एक 3-आयामी चर है, और $b को एक समतल कटआउट मिलता है जिसे द्वारा परिभाषित किया गया है
स्थान $z1 पर $x2, $x1, $y2, $y1 को सीमित करता है। $z1 के आसपास का कोष्ठक इसका कारण बनता है
तुच्छ सूचकांक को हटा दिया जाना चाहिए - अन्यथा $b एक तिहाई के साथ त्रि-आयामी होगा
क्रम 1 का आयाम.

आप पीडीएल स्लाइस को तत्व-वार असाइनमेंट ऑपरेटर के दोनों तरफ रख सकते हैं ".=", जैसे
इसलिए:

# $bigimage के भाग को $smallimage के मानों पर सेट करें
$bigimage->($xa:$xb,$ya:$yb) .= $smallimage;

कुछ अन्य विविध:

$सी = नेलेम($ए); #पिक्सेल की संख्या

$val = at($ऑब्जेक्ट, $x,$y,$z...) # पर्ल स्केलर के रूप में स्थिति पर पिक्सेल मान
$val = $object->at($x,$y,$z...) # समतुल्य (विधि सिंटैक्स ठीक)

$बी = xvals($a); # सरणी को X-समन्वय मानों से भरें (yvals(), zvals() भी,
रेडियल दूरी के लिए # axisvals($x,$axis) और rvals()
#केंद्र से).

इनपुट / आउटपुट
"पीडीएल::आईओ" मॉड्यूल कई उपयोगी आईओ प्रारूप फ़ंक्शन लागू करते हैं। यह बहुत ज्यादा होगा
प्रत्येक का उदाहरण देने के लिए, लेकिन आप PDL::IO पर एक अच्छा अवलोकन पा सकते हैं। यहाँ इसका एक नमूना है
पीडीएल में कुछ समर्थित IO प्रारूप।

पीडीएल::आईओ::विविध
Ascii, FITS और FIGARO/NDF IO रूटीन।

पीडीएल::आईओ::फास्टरॉ
आपकी मशीन के कच्चे डेटा प्रकारों का उपयोग करना, एक गैर-पोर्टेबल लेकिन अत्यधिक तेज़ IO
प्रारूप। मेमोरी को संरक्षित करने के साथ-साथ अधिक गति प्राप्त करने के लिए मेमोरी मैपिंग का भी समर्थन करता है।

पीडीएल::आईओ::फ्लेक्सरॉ
सामान्य कच्चे डेटा प्रारूप. फास्टरॉ की तरह, केवल बेहतर।

पीडीएल::आईओ::ब्राउज़र
सरणियों के लिए एक अभिशाप ब्राउज़र।

पीडीएल::आईओ::पीएनएम
पोर्टल बिटमैप और पिक्समैप समर्थन।

पीडीएल::आईओ::तस्वीर
पिछले मॉड्यूल और नेटपीबीएम का उपयोग करने से जीआईएफ, जेपीईजी आसानी से लिखना संभव हो जाता है
और जो कुछ भी सरल आदेशों के साथ।

ग्राफिक्स
PerlDL के पीछे का दर्शन इसे विभिन्न प्रकार के मौजूदा ग्राफिक्स के साथ काम करना है
पुस्तकालय क्योंकि कोई भी एक पैकेज सभी लोगों और सभी जरूरतों को पूरा नहीं करेगा और यह अनुमति देता है
किसी ऐसे पैकेज के साथ काम करना जिसे वह पहले से जानता हो और पसंद करता हो। जाहिर है कुछ होंगे
कार्यक्षमता में ओवरलैप और कुछ स्थिरता और एकरूपता की कमी। हालाँकि यह अनुमति देता है
तेजी से विकसित हो रहे क्षेत्र के साथ तालमेल बनाए रखने के लिए पीडीएल - नवीनतम पीडीएल मॉड्यूल इंटरफेस प्रदान करते हैं
ओपनजीएल और वीआरएमएल ग्राफिक्स के लिए!

पीडीएल::ग्राफिक्स::पीजीपीएलओटी
पीजीपीएलओटी लाइन ग्राफिक्स और छवि प्रदर्शन के लिए एक सरल लाइब्रेरी प्रदान करता है।

आंतरिक मॉड्यूल PDL::Graphics::PGPLOT में इसका एक आसान इंटरफ़ेस है, जो
अलग से उपलब्ध पीजीपीएलओटी शीर्ष-स्तरीय मॉड्यूल में रूटीन को कॉल करता है।

पीडीएल::ग्राफिक्स::पीएलप्लॉट
पीएलप्लॉट कई आउटपुट ड्राइवरों के साथ ग्राफिक्स बनाने के लिए एक सरल लाइब्रेरी प्रदान करता है,
डायरेक्ट-टू-पिडल ड्राइवर सहित।

यह मॉड्यूल पीएलप्लॉट पर निर्मित उच्च-स्तरीय और निम्न-स्तरीय दोनों कार्यक्षमता प्रदान करता है।
निम्न-स्तरीय कमांड पीएलप्लॉट के सी इंटरफ़ेस से काफी हद तक सीधे जुड़े हुए हैं। और पढ़ें
पीडीएल::ग्राफिक्स::पीएलप्लॉट पर।

पीडीएल::ग्राफिक्स::आईआईएस
कई खगोलशास्त्री SAOimage और Ximtool (या उनके व्युत्पत्ति/क्लोन) का उपयोग करना पसंद करते हैं। इन
छवियों के निरीक्षण और विज़ुअलाइज़ेशन के लिए उपयोगी निःशुल्क विजेट हैं। (वे नहीं हैं
perlDL के साथ प्रदान किया गया है लेकिन इसे उनकी आधिकारिक साइटों से आसानी से प्राप्त किया जा सकता है
जाल।)

PDL::Graphics::IIS पैकेज किसी को इनमें छवियां प्रदर्शित करने की अनुमति देता है ("IIS"
छवि प्रदर्शन हार्डवेयर की एक प्राचीन वस्तु का नाम है जिसके प्रोटोकॉल ये उपकरण हैं
के अनुरूप।)

पीडीएल::ग्राफिक्स::ट्राइडी
PDL::Graphics::TriD देखें, यह OpenGL के लिए 3D रूटीन का एक संग्रह है और (जल्द ही)
वीआरएमएल और अन्य 3डी प्रारूप जो पीडीएल से 3डी बिंदु, रेखा और सतह प्लॉट की अनुमति देते हैं।

ऑटोलोडिंग
पीडीएल::ऑटोलोडर देखें। यह शायद एक तरह से किसी को मांग पर कार्यों को स्वचालित रूप से लोड करने की अनुमति देता है
मैटलैब के उपयोगकर्ताओं से परिचित।

कोई पीडीएल एक्सटेंशन को सामान्य पर्ल मॉड्यूल के रूप में भी लिख सकता है।

पीडीएल गोले
पर्ल स्क्रिप्ट "pdl2" (या "perldl") पीडीएल को एक सरल कमांड लाइन इंटरफ़ेस प्रदान करती है। अगर
नवीनतम रीडलाइन्स/रीडकी मॉड्यूल स्थापित किए गए हैं "पीडीएल2" इसका पता लगाता है और सक्षम करता है
कमांड लाइन रिकॉल और संपादन। विवरण के लिए मैन पेज देखें.

उदाहरण के लिए:

% perldl
पर्लडीएल शेल v1.354
पीडीएल बिल्कुल किसी वारंटी के साथ नहीं आता है। विवरण के लिए फ़ाइल देखें
पीडीएल वितरण में 'कॉपी' करना। यह मुफ़्त सॉफ़्टवेयर है और आप
कुछ शर्तों के तहत इसे पुनर्वितरित करने का स्वागत है, देखें
विवरण के लिए वही फ़ाइल।
रीडलाइन्स, नाइसस्लाइस, मल्टीलाइन्स सक्षम
PDL/default.perldlrc पढ़ा जा रहा है...
दस्तावेज़ डेटाबेस मिला /home/pdl/dev/lib/perl5/site_perl/PDL/pdldoc.db
ऑनलाइन सहायता के लिए 'सहायता' टाइप करें
ऑनलाइन डेमो के लिए 'डेमो' टाइप करें
लोडेड पीडीएल v2.4.9_003 (खराब मानों का समर्थन करता है)
पीडीएल> $x = rfits 'm51.fits'
छवि डेटा पढ़ रहा है...
BITPIX = 32 आकार = 147456 पिक्सेल
589824 बाइट्स पढ़ना
BSCALE = && BZERO =

पीडीएल> पीडीएल::ग्राफिक्स::पीजीपीएलओटी का उपयोग करें;
पीडीएल> इमेज $x
384 से 384 तक 40 x 761 छवि प्रदर्शित करना, 84 रंगों (16-99) का उपयोग करना...

आप चाहें तो इसे पर्ल डिबगर ("perl -MPDL -d -e 1") से भी चला सकते हैं।

विविध शैल विशेषताएं:

p शेल उपनाम "p" को "प्रिंट" का एक सुविधाजनक संक्षिप्त रूप माना जाता है, उदाहरण के लिए।

पीडीएल> पी वाले 5,3
[
[1 1 1 1 1 XNUMX]
[1 1 1 1 1 XNUMX]
[1 1 1 1 1 XNUMX]
]

आरंभीकरण
फ़ाइलें "~/.perldlrc" और "local.perldlrc" (वर्तमान निर्देशिका में) स्रोत हैं यदि
मिला। यह उपयोगकर्ता को स्टार्टअप के लिए वैश्विक और स्थानीय पीडीएल कोड प्राप्त करने की अनुमति देता है।

मदद
'सहायता' टाइप करें! कोई पीडीएल दस्तावेज़ खोज सकता है, और किसी भी दस्तावेज़ को देख सकता है
समारोह.

पलायन
"#" वर्ण से शुरू होने वाली किसी भी पंक्ति को शेल एस्केप के रूप में माना जाता है। यह वर्ण
पर्ल वेरिएबल $PERLDL_ESCAPE सेट करके कॉन्फ़िगर करने योग्य है। यह, उदाहरण के लिए, हो सकता है
अदि होना "~/.perldlrc".

अधिभार ऑपरेटरों
पीडीएल पर काम करने के लिए निम्नलिखित अंतर्निहित पर्ल ऑपरेटरों और कार्यों को अतिभारित किया गया है
चर:

+ - * / > = > एवं | ^ == != ** % ! ~
पाप लॉग एबीएस atan2 sqrt cos ऍक्स्प

[सभी एकात्मक कार्यों (पाप आदि) का उपयोग किया जा सकता है जगह में() - नीचे "मेमोरी" देखें।]

वस्तु उन्मुखीकरण और perlDL
पीडीएल ऑपरेशन फ़ंक्शंस और विधियों के रूप में उपलब्ध हैं। इस प्रकार कोई भी नए प्रकार प्राप्त कर सकता है
ऑब्जेक्ट, कस्टम डेटा वर्गों का प्रतिनिधित्व करने के लिए।

ओवरलोडिंग का उपयोग करके कोई गणितीय ऑपरेटरों से जो चाहे करवा सकता है, और पीडीएल
इसमें कुछ अंतर्निहित तरकीबें हैं जो मौजूदा पीडीएल फ़ंक्शंस को अपरिवर्तित काम करने की अनुमति देती हैं, भले ही
अंतर्निहित डेटा प्रतिनिधित्व काफी हद तक बदल गया है! पीडीएल::ऑब्जेक्ट देखें

याद प्रयोग और संदर्भ
वास्तव में विशाल डेटा सारणी के साथ खिलवाड़ करने के लिए कुछ देखभाल की आवश्यकता हो सकती है। perlDL बहुत कुछ प्रदान करता है
अतिरिक्त प्रतियाँ उत्पन्न किए बिना आपको बड़ी सारणियों पर संचालन करने की सुविधा
हालाँकि इसके लिए प्रोग्रामर को थोड़ा अधिक विचार और देखभाल की आवश्यकता होती है।

ध्यान दें: कुछ अधिकांश सिस्टमों पर पर्ल (बिल्ड विकल्पों के दौरान) को कॉन्फ़िगर करना बेहतर होता है
पर्ल के अंतर्निर्मित फ़ंक्शन के बजाय सिस्टम "मॉलोक ()" फ़ंक्शन का उपयोग करें। ऐसा इसलिए है क्योंकि पर्ल का
वर्चुअल मेमोरी की खपत के बजाय गति के लिए अनुकूलित किया गया है - इसका परिणाम यह हो सकता है
आपके द्वारा उपयोग की जा सकने वाली मेमोरी स्टोरेज की मात्रा में दो सुधारों का एक कारक। पर्ल मॉलोक
5.004 में और बाद में कई संकलन-समय विकल्प हैं जिनका उपयोग आप ट्यून करने के लिए कर सकते हैं
व्यवहार।

सरल अंकगणित
यदि $a एक बड़ी छवि है (उदाहरण के लिए 10एमबी घेरने वाली) तो कमांड

$ए = $ए + 1;

अन्य 10MB मेमोरी खा जाता है। ऐसा इसलिए है क्योंकि अभिव्यक्ति "$a+1" एक बनाती है
परिणाम को होल्ड करने के लिए $a की अस्थायी प्रतिलिपि, फिर $a को उसका एक संदर्भ सौंपा गया है।
इसके बाद मूल $ए नष्ट हो जाता है इसलिए कोई नहीं है स्थायी स्मृति अपशिष्ट. लेकिन पर
एक छोटी सी मशीन में, मेमोरी फ़ुटप्रिंट में वृद्धि काफी हो सकती है। यह है
जाहिर तौर पर इस तरह से किया गया है इसलिए "$c=$a+1" अपेक्षा के अनुरूप काम करता है।

इसके अलावा अगर कोई कहता है:

$बी = $ए; # $b और $a अब एक ही डेटा की ओर इशारा करते हैं
$ए = $ए + 1;

फिर $b और $a अंततः अलग-अलग हो जाते हैं, जैसा कि एक भोलेपन से अपेक्षा की जाती है, क्योंकि एक नया संदर्भ
बनाया गया है और $a उसे सौंपा गया है।

हालाँकि यदि $a एक बहुत बड़ी मेमोरी हॉग थी (उदाहरण के लिए एक 3D वॉल्यूम) तो इसकी एक प्रति बनाना संभव नहीं होगा
अच्छी बात हो. उपरोक्त उदाहरण में कोई यह कहकर इस मेमोरी ओवरहेड से बच सकता है:

$a++;

ऑपरेशन "++,+=,--,-=", आदि सभी का एक विशेष "इन-प्लेस" संस्करण कहते हैं
अंकगणित सबरूटीन. इसका मतलब यह है कि अब और मेमोरी की आवश्यकता नहीं है - इसका नकारात्मक पक्ष यह है
कि यदि "$b=$a" तो $b भी बढ़ जाता है। किसी प्रतिलिपि को स्पष्ट रूप से बाध्य करने के लिए:

$बी = पीडीएल $ए; # असली कॉपी

या, वैकल्पिक रूप से, शायद बेहतर शैली:

$बी = $ए->कॉपी;

कार्य
अधिकांश फ़ंक्शन, उदा. "लॉग ()", एक परिणाम लौटाता है जो उनका एक परिवर्तन है
तर्क। इससे प्रोग्रामिंग का अच्छा अभ्यास होता है। हालाँकि कई ऑपरेशन हो सकते हैं
"इन-प्लेस" किया गया और इसकी आवश्यकता तब हो सकती है जब बड़े एरे उपयोग में हों और मेमोरी चालू हो
एक प्रीमियम। इन परिस्थितियों के लिए ऑपरेटर जगह में() प्रदान किया जाता है जो रोकता है
अतिरिक्त प्रतिलिपि और तर्क को संशोधित करने की अनुमति देती है। जैसे:

$x = लॉग($सरणी); # $सरणी अप्रभावित
लॉग(इनप्लेस($बिगरे)); # $bigarray यथास्थान बदल गया

चेतावनी:

1. डुप्लिकेट संदर्भों के बारे में सामान्य चेतावनियाँ लागू होती हैं।

2. जाहिर है जब कुछ कार्यों के साथ प्रयोग किया जाता है जिन्हें यथास्थान लागू नहीं किया जा सकता है (उदाहरण के लिए)
"convolve()") अप्रत्याशित प्रभाव हो सकते हैं! हम "इनप्लेस()"-सुरक्षित इंगित करने का प्रयास करते हैं
दस्तावेज़ीकरण में कार्य करता है.

3. प्रकार के रूपांतरण, जैसे "फ़्लोट()", छिपी हुई प्रतिलिपि का कारण बन सकते हैं।

यह सुनिश्चित करना मूर्खता
यदि आपने एक साधारण फ़ंक्शन लिखा है और आप नहीं चाहते कि यह आपके सामने आए
इसे पीडीएल वैरिएबल के बजाय एक साधारण संख्या पास करें। बस फ़ंक्शन को कॉल करें टॉपडीएल() प्रथम
इसे सुरक्षित बनाने के लिए. जैसे:

उप मायफिडल { मेरा $पीडीएल = टॉपडीएल(शिफ्ट); $pdl->fiddle_foo(...); ... }

यदि पीडीएल वैरिएबल पारित हो जाता है तो "टॉपडीएल()" प्रतिलिपि नहीं बनाता है - यह बस गिर जाता है -
जो स्पष्टतः वांछित व्यवहार है। दिनचर्या सामान्य रूप से आवश्यक नहीं है
उपयोगकर्ता परिभाषित फ़ंक्शन जो आंतरिक चीज़ों की परवाह नहीं करते हैं।

onworks.net सेवाओं का उपयोग करके PDL::QuickStartp का ऑनलाइन उपयोग करें



नवीनतम Linux और Windows ऑनलाइन प्रोग्राम