PDL::FAQp - מקוון בענן

זוהי הפקודה PDL::FAQp שניתן להריץ בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

תָכְנִית:

שֵׁם


PDL::FAQ - שאלות נפוצות לגבי PDL

גִרְסָה


גרסת שאלות נפוצות נוכחיות: 1.004

תיאור


זוהי גרסה 1.004 של השאלות הנפוצות של PDL, אוסף של שאלות נפוצות בנושא
PDL - שפת הנתונים של Perl.

על אודות זה מסמך


Q: 1.1 איפה ל למצוא זֶה מסמך
אתה יכול למצוא את הגרסה העדכנית ביותר של מסמך זה בכתובת
<http://pdl.perl.org/?docs=FAQ&title=נפוצות%20שאלות%20שאלות> .

Q: 1.2 איך ל לתרום ל זֶה מסמך
זוהי גרסה מחודשת במידה ניכרת של השאלות הנפוצות של PDL. ככזה עלולות להיות שגיאות רבות
התגנב פנימה וייתכן שעדכונים רבים לא נכנסו. מומלץ במפורש לתת
אנחנו יודעים על שאלות שלדעתך יש לענות עליהן במסמך זה אך כרגע
אינם.

באופן דומה, אם אתה חושב שחלקים ממסמך זה אינם ברורים, אנא ספר למנהל השאלות הנפוצות
בנוגע לזה. כאשר תשובה ספציפית נלקחת במלואה ממישהו שמפרסם את המחבר
יש לציין, יידע את מנהל השאלות הנפוצות אם לא. למידע כללי נוסף
הכרה מפורשת לא מופיעה בטקסט, אלא יש רשימה חלקית של
תורמים בסוף מסמך זה. אנא צור קשר עם מנהל השאלות הנפוצות אם אתה מרגיש
קשה על ידי.

שלח את הערותיך, תוספות, הצעות או תיקונים לרשימת התפוצה של PDL בכתובת
perldl@jach.hawaii.edu. ראה ש: 3.2 להלן להנחיות כיצד להצטרף לדיוור
רשימות.

כללי שאלות


Q: 2.1 מה is PDL ?
PDL מייצג פרל נתונים שפה . לומר זאת במילותיו של קרל גלזברוק,
יוזם פרויקט PDL:

הרעיון של PDL הוא לתת ל-perl5 סטנדרטי את היכולת
לאחסן בצורה קומפקטית ולתפעל במהירות את הגדול
מערכי נתונים N-ממדיים שהם הלחם והחמאה
של מחשוב מדעי. למשל $a=$b+$c יכול להוסיף שניים
תמונות בגודל 2048x2048 בשבריר שנייה בלבד.

הוא מספק טונות של פונקציונליות שימושית לניתוח מדעי ומספרי.

לקוראים המכירים חבילות הערכת נתונים מדעיות אחרות, זה עשוי להועיל
הוסף כי PDL דומה במובנים רבים ל-IDL, MATLAB וחבילות דומות. עם זאת, זה
מנסה לשפר במספר נושאים שנתפסו (על ידי מחברי PDL) כ
חסרונות של אותן חבילות קיימות.

Q: 2.2 מי תומך PDL? מי מפתחת את זה?
PDL נתמך על ידי המשתמשים שלו. תמיכה בלתי רשמית כללית ל-PDL ניתנת דרך
רשימת תפוצה PDL (perldl@jach.hawaii.edu , ראה למטה).

בתור הרחבה של Perl (ראה שאלה: 2.5 להלן) היא מוקדשת לרעיון של חופשי ופתוח
פיתוח שהוצג על ידי קהילת פרל. PDL פותח ומפותח באופן פעיל על ידי א
קבוצה סרוגה באופן רופף של אנשים ברחבי העולם שמתאמים את פעילותם דרך ה
רשימת תפוצה לפיתוח PDL (pdl-porters@jach.hawaii.edu , ראה ש: 3.2 להלן). אם אתה
רוצה להצטרף למאמצים המתמשכים לשיפור PDL, אנא הצטרף לרשימה זו.

Q: 2.3 למה עוד אַחֵר נתונים שפה ?
למעשה ישנן מספר סיבות וכל אחד צריך להחליט בעצמו מהן
החשובים ביותר:

· PDL היא "תוכנה חופשית". מחברי PDL חושבים שלמושג זה יש כמה
יתרונות: לכולם יש גישה למקורות -> ניפוי באגים טוב יותר, ניתנים להתאמה בקלות
לצרכים שלך, להרחבה למטרות שלך וכו'... בהשוואה למסחרי
חבילות כגון MATLAB ו-IDL יש לכך חשיבות רבה עבור עובדים אשר
רוצה לעשות קצת עבודה בבית ולא יכול לעמוד בעלות הניכרת של קניית מסחר
חבילות לשימוש אישי.

· PDL מבוסס על שפת סקריפטים חזקה ומעוצבת היטב: Perl. בניגוד ל
שפות אחרות לניתוח נתונים מדעיים/נומריים תוכנן תוך שימוש ב-
תכונות של שפה מוכחת במקום להתקיים מאפס.
הגדרת מבני הבקרה בזמן שהתכונות נוספו במהלך הפיתוח מובילה
שפות שנראות לעתים קרובות מגושמות ומתוכננות בצורה גרועה עבור רוב החבילות הקיימות עם
היקף דומה ל-PDL.

· שימוש ב-Perl כבסיס למתכנת PDL יש את כל התכונות החזקות של Perl ברשותו
יד, ממש מההתחלה. זה כולל ביטויים רגולריים, מערכים אסוציאטיביים
(hashes), ממשקים מעוצבים היטב למערכת ההפעלה, רשת וכו'. ניסיון
הראתה שאפילו בתכנות בעל אוריינטציה מספרית היא לרוב מאוד קיצונית
שימושי אם יש לך גישה קלה לחצי מספרי רב עוצמה או לא מספרי לחלוטין
גם פונקציונליות. לדוגמה, אולי תרצה להציע את התוצאות של א
חישוב מסובך כתהליך שרת לתהליכים אחרים ברשת, אולי
קבלה ישירה של קלט מתהליכים אחרים ברשת. שימוש ב-Perl וקיים
חבילות הרחבה של Perl דברים כאלה אינם בעיה בכלל (והכל יתאים
לתוך "סקריפט PDL").

· יכולת הרחבה ותפעול הדדית קלה במיוחד שכן PDL היא הרחבה של Perl;
תמיכת פיתוח עבור הרחבות Perl היא חלק בלתי נפרד מפרל ויש
כבר מספר הרחבות ל-Perl הסטנדרטי הזמינות באופן חופשי ברשת.

· תכונות שפה אינטגרליות של Perl (ביטויים רגולריים, גיבוב, מודולי אובייקט)
הקלה מאוד על פיתוח ויישום של מושגי מפתח של PDL. אחד מ
הדוגמאות הבולטות ביותר לנקודה זו היא כנראה PDL::PP (ראה שאלה: 6.16 להלן), א
מחולל קוד/מנתח/פרה-מעבד שמייצר פונקציות PDL מתמציתיות
תיאורים.

· אף אחת משפות הנתונים הקיימות לא עומדת בכללי שפת Perl, שהכותבים
מאמין בתוקף ב:

· TIMTOWTDI: יש יותר מדרך אחת לעשות את זה. שפות מינימליסטיות הן
מעניין עבור מדעני מחשב, אבל עבור משתמשים, מעט יתירות
עושה את הדברים קלים יותר להתמודדות ומאפשרת סגנונות תכנות בודדים -
בדיוק כמו שאנשים מדברים בדרכים שונות. עבור אנשים רבים זה ללא ספק יהיה א
סיבה להימנע מ-PDL ;)

· דברים פשוטים הם דברים פשוטים, מסובכים אפשריים: דברים שנעשים לעתים קרובות
צריך להיות קל לעשות בשפה, בעוד שדברים שנעשו לעתים רחוקות לא צריכים להיות יותר מדי
מסורבלת.

כל השפות הקיימות מפרות לפחות אחד מהכללים הללו.

· כפרויקט לעתיד PDL אמור להיות מסוגל להשתמש בתכונות מחשב על, למשל
יכולות וקטוריות/עיבוד מקביל, האצת GPGPU. זה כנראה יהיה
מושגת על ידי כך ש-PDL::PP (ראה ש: 6.16 להלן) ייצור קוד מתאים על כך
ארכיטקטורות כדי לנצל את התכונות הללו.

· [ מלא את 111 הסיבות האישיות שלך כאן...]

Q: 2.4 מה is PDL טוב ל ?
רק למקרה שאתה עדיין לא יודע מהן התכונות העיקריות של PDL ומה אפשר לעשות
יחד איתם, הנה רשימה (סלקטיבית בהכרח) של תכונות מפתח:

PDL מתאים היטב לחישובי מטריצות, טיפול כללי בנתונים רב מימדיים,
עיבוד תמונה, חישוב מדעי כללי, יישומים מספריים. זה תומך ב-I/O
עבור פורמטים פופולריים רבים של תמונות ונתונים, 1D (עלילות קווים), 2D (תמונות) ותלת מימד (נפח
הדמיה, עלילות פני השטח באמצעות OpenGL - למשל מיושמות באמצעות Mesa או וידאו
מנהלי התקנים של כרטיס OpenGL), יכולות תצוגה גרפית ומיישמת מספריים ומספריים רבים
אלגוריתמים חצי מספריים.

באמצעות המעבד המוקדם החזק קל גם לממשק את Perl ל-C המועדף עליך
שגרות, עוד על כך בהמשך.

Q: 2.5 מה is מה היא הקשר בֵּין PDL ו פרל ?
PDL היא חבילת הרחבה של Perl5. ככזה הוא זקוק להתקנת Perl5 קיימת (ראה
למטה) כדי לרוץ. יתר על כן, חלק גדול מה-PDL כתוב ב-Perl (+ פונקציונליות ליבה מסוימת
כתוב ב-C). תוכניות PDL הן (מבחינה תחבירית) רק סקריפטים של Perl שבמקרה משתמשים בהם
חלק מהפונקציונליות המיושמת על ידי החבילה "PDL".

Q: 2.6 מה do I צורך ל לָרוּץ PDL on my מכונה ?
מכיוון ש-PDL היא רק חבילת Perl5, אתה צריך קודם כל התקנה של Perl5 על שלך
מְכוֹנָה. נכון לכתיבת שורות אלה PDL דורשת גרסה 5.8 של perl, ומעלה. עוד מידע
על היכן וכיצד להשיג התקנת Perl ניתן למצוא בדף הבית של Perl
<http://www.perl.org> ובאתרי CPAN רבים (אם אינך יודע מה CPAN הוא, בדוק את
תשובה לשאלה הבאה).

כדי לבנות PDL אתה צריך גם מהדר C עובד, תמיכה ב-Xsubs והחבילה
Extutils::MakeMaker. אם אין לך מהדר ייתכן שתהיה הפצה בינארית
זמין, ראה "הפצות בינאריות" להלן.

אם אתה יכול (או לא יכול) לגרום ל-PDL לעבוד על פלטפורמה חדשה (שלא נתמכה בעבר) היינו עושים זאת
אוהב לשמוע על זה. אנא דווח על הצלחה/כישלון לרשימת התפוצה של PDL בכתובת
perldl@jach.hawaii.edu . אנו נעשה כמיטב יכולתנו לסייע לך בהעברת PDL למערכת חדשה.

Q: 2.7 איפה do I לקבל את זה?
PDL זמין כהפצת מקור ב- מקיף פרל ארכיון רשת (אוֹ
CPAN) ומדף הפרויקט sourceforge.net בכתובת
. ארכיון ה-CPAN מכיל לא רק את
הפצת PDL אבל גם כמעט כל דבר אחר שקשור ל-Perl. CPAN הוא
שיקוף על ידי עשרות אתרים בכל רחבי העולם. האתר הראשי הואhttp://www.cpan.org>,
וניתן למצוא שם אתרי CPAN מקומיים (מראות). בתוך CPAN אתה מוצא את העדכונים האחרונים
גרסה שפורסמה של PDL בספרייה /modules/by-module/PDL/. דף הבית של PDL נמצא בכתובת
<http://pdl.perl.org> וניתן להוריד משם גם את הגרסה העדכנית ביותר.

Q: 2.8 מה do I יש ל לשלם ל לקבל PDL?
אנו שמחים להיות מסוגלים לתת לך את התשובה הנחמדה ביותר על שאלה כמו
זה: PDL היא *תוכנה חופשית* וכל המקורות זמינים לציבור. אבל בכל זאת, יש
כמה זכויות יוצרים שצריך לעמוד בהן. אז בבקשה, נסו להיות נחמדים כמונו (מחברי ה-PDL).
ולנסות לציית להם.

הו, לפני שאתה חושב שזה *לגמרי* בחינם: אתה צריך להשקיע קצת זמן כדי למשוך את
הפצה מהרשת, קומפלט והתקן אותו ו(אולי) קרא את המדריכים.

מקבל עזרה/עוד מידע


Q: 3.1 איפה יכול I לקבל מידע on PDL?
תיעוד PDL המלא זמין עם הפצת PDL. השתמש בפקודה
"perldoc PDL" כדי להתחיל ללמוד על PDL.

עם זאת, הדרך הקלה ביותר, ללא ספק, להכיר את PDL היא להשתמש בעזרה המקוונת של PDL
מתקן מתוך מעטפת PDL, "pdl2" פשוט הקלד "pdl2" בהנחיית המערכת שלך. פַּעַם
אתה נמצא בתוך מעטפת "pdl2" הקלד "עזרה". שימוש בפקודות "עזרה" ו"אפרופו".
בתוך המעטפת אתה אמור להיות מסוגל למצוא את הדרך לעקוף את התיעוד.

אפילו טוב יותר, אתה יכול מיד לנסות את הידע החדש שלך על PDL על ידי הנפקה
פקודות PDL/Perl ישירות בשורת הפקודה. כדי להמחיש תהליך זה, הנה
תיעוד של סשן "pdl2" טיפוסי של PDL מתחיל (פלט ארוך הוא רק באופן סמלי
משוכפל בסוגרים ( <... ...> ) ):

unix> pdl2
pdl> עזרה
< ... פלט עזרה ... >
pdl> עזרה PDL::QuickStart
< ... דף perldoc ... >
pdl> $a = pdl (1,5,7.3,1.0)
pdl> $b = רצף צף, 4, 4
pdl> עזרה פנימית
< ... עזרה בפונקציה 'הפנימית' ... >
pdl> $c = $a פנימי, $b
pdl> p $c
[22.6 79.8 137 194.2]

למקורות מידע נוספים הנגישים דרך האינטרנט ראה הבא
שְׁאֵלָה.

Q: 3.2 הם שם אַחֵר PDL מידע מקורות on מה היא מרשתת?
קודם כל, לכל השאלות הטהורות הקשורות לפרל יש המון מקורות ברשת.
נקודות טובות להתחלה הןhttp://www.perl.com> וhttp://www.perl.org>.

ניתן לגשת לאתר הבית של PDL על ידי הפניית דפדפן האינטרנט שלך אליוhttp://pdl.perl.org>.
יש בו טונות של דברים טובים לכל מי שמתעניין ב-PDL:

· הפצות PDL

· תיעוד מקוון

· מצביעים לארכיון HTML של רשימות התפוצה של PDL

· רשימת פלטפורמות בהן נבדק PDL בהצלחה.

· חדשות על תכונות שנוספו לאחרונה, ספריות מועברות וכו'.

· שם מחזיקי הדלעת הנוכחיים עבור מודולי ה-PDL השונים (אם אתה רוצה לדעת
מה זה אומר שעדיף שתסתכל על דפי האינטרנט).

אם אתם מתעניינים ב-PDL באופן כללי, תוכלו להצטרף לרשימת התפוצה של PDL
perldl@jach.hawaii.edu. זהו פורום לדון בבעיות תכנות ב-PDL, לדווח על באגים,
בקש עזרה בבעיות הקשורות ל-PDL וכו'. כדי להירשם, מלא את הטופס בכתובת
<http://mailman.jach.hawaii.edu/mailman/listinfo/perldl>.

ארכיון הניתן לחיפוש וגרסת היפרטקסט של התנועה ברשימה זו (1997-2004) יכולים
להימצא בhttp://www.xray.mpe.mpg.de/mailing-lists/perldl/> . הודעות אחרונות יותר
(מאז יוני 2005) ניתן למצוא בhttp://mailman.jach.hawaii.edu/mailman/listinfo/perldl>
.

אם אתה מעוניין בכל הפרטים הטכניים של פיתוח PDL מתמשך אתה יכול
הצטרף לרשימת התפוצה של מפתחי PDL pdl-porters@jach.hawaii.edu . להרשמה יש למלא
הפורמטhttp://mailman.jach.hawaii.edu/mailman/listinfo/pdl-porters>.

ארכיון הניתן לחיפוש וגרסת היפרטקסט של התנועה ברשימה זו (1997-2004) יכולים
להימצא בhttp://www.xray.mpe.mpg.de/mailing-lists/pdl-porters/> . הודעות אחרונות יותר
(מאז יוני 2005) ניתן למצוא ב
<http://mailman.jach.hawaii.edu/mailman/listinfo/pdl-porters>.

יש להימנע מפרסום צולב בין רשימות אלו אלא אם כן יש א מאוד סיבה טובה ל
עושה זאת.

Q: 3.3 מה is מה היא נוֹכְחִי גרסה of PDL ?
נכון לכתיבת שורות אלה (גרסת שאלות נפוצות 1.004 מ-16 בספטמבר 2013) הגרסה היציבה האחרונה היא 2.006.
הגרסה היציבה האחרונה צריכה להיות זמינה תמיד מאתר מראה CPAN הקרוב אליך (ראה
שאלה 2.7 למידע על היכן להשיג PDL).

את הגרסה העדכנית ביותר (אולי לא יציבה) של PDL ניתן להשיג מה-Git
מאגר, ראה שאלה 4.10 ומהדורות תקופתיות של מפתחי CPAN של קוד Git
להיעשות למטרות בדיקה וזמינות כללית יותר. הפוסט הנוכחי של PDL-2.006
גרסה למפתחים של PDL זמינה כ CHM/PDL-2.006_07.tar.gz .

Q: 3.4 I רוצה ל לתרום ל מה היא נוסף פיתוח of PDL. איך יכול I לעזור?
שתי דרכים בהן תוכל לעזור כמעט מיד הן (1) להשתתף ב-CPAN Testers עבור
PDL ומודולים קשורים, ו (2) הגהה והבהרת תיעוד PDL כך
זה הכי שימושי עבור משתמשי PDL, במיוחד משתמשים חדשים.

כדי להשתתף ב-CPAN Testers ולתרום דוחות בדיקה, העמוד
<http://wiki.cpantesters.org/wiki/QuickStart> יש הוראות להפעלה עבור אחד מהם
משתמשי "CPAN" או "CPANPLUS".

אם יש לך פרויקט מסוים בראש, עליך לבדוק אם מישהו אחר כבר עובד
על זה או אם אתה יכול להפיק תועלת ממודולים קיימים. עשה זאת על ידי פרסום הפרויקט המתוכנן שלך
לרשימת התפוצה של מפתחי PDL בכתובת pdl-porters@jach.hawaii.edu . ראה את המנוי
הוראות בשאלה 3.2. אנחנו תמיד מחפשים אנשים לכתוב קוד ו/או
תיעוד ;).

Q: 3.5 I לחשוב I יש מצא a באג in מה היא נוֹכְחִי גרסה of PDL. מה יהיה I לַעֲשׂוֹת?
ראשית, ודא שהבאג/בעיה שנתקלת בה טרם טופלה
במקום אחר בשאלות נפוצות זה. שנית, אתה יכול לבדוק את הארכיון הניתן לחיפוש של PDL
רשימות תפוצה כדי לגלות אם הבאג הזה כבר נדון. אם עדיין לא
מצא את כל ההסברים שאתה יכול לפרסם דוח באג perldl@jach.hawaii.edu , או דרך
הקישור באגים פועלhttp://pdl.perl.org> . ראה את באגים קובץ בהפצת PDL עבור
איזה מידע לכלול. אם אינך בטוח, דיונים דרך רשימת התפוצה של perldl
יכול להיות מועיל ביותר.

התקנה


Q: 4.1 I יש בעיות התקנה PDL. מה יהיה I לַעֲשׂוֹת?
ראשית ודא שקראת את הקובץ תתקין בהפצה. זה מכיל רשימה
של בעיות נפוצות שמיותר לחזור עליהן כאן.

לאחר מכן, בדוק את הקובץ perldl.conf כדי לראות אם על ידי עריכת אפשרויות התצורה בזה
קובץ תוכל לבנות בהצלחה PDL. חלק מהמודולים זקוקים לתוספת
תוכנה מותקנת, אנא עיין בקובץ תלות לפרטים נוספים. לוודא
כדי לערוך את המיקום של חבילות אלה ב-perldl.conf אם יש לך אותן בסטנד לא סטנדרטי
מיקומים.

הערה ספציפית למעטפת Unix: אם תרצה לשמור perldl.conf ערוך לעתיד
בונה פשוט העתק את זה בתור ~/.perldl.conf אל ספריית הבית שלך, שם היא תיאסף
אוטומטית במהלך תהליך הבנייה של PDL.

כמו כן, בדוק אם יש גרסה אחרת, קיימת מראש של PDL במערכת ה-build. PDL מרובים
התקנות באותו PATH או @INC עלולות לגרום לכשלי בדיקה או בנייה תמוהים.

אם אתה עדיין לא מצליח לגרום לזה לעבוד כמו שצריך, שלח דוח באג כולל פירוט
מידע על הבעיות שנתקלת ברשימת התפוצה של perldl (
perldl@jach.hawaii.edu , ראה גם למעלה). התגובה היא לרוב מהירה.

Q: 4.2 הם שם תצורה קבצים ל PDL I יש ל לערוך?
רוב המשתמשים לא צריכים לערוך קבצי תצורה ידנית. עם זאת, בחלקם
מקרים שאולי תצטרך לספק מידע על מיקום מביך כולל
קבצים/ספריות או שאולי תרצה לבטל במפורש בנייה של חלק מה-PDL האופציונלי
מודולים. בדוק את הקבצים תתקין ו perldl.conf לקבלת פרטים.

אם היית צריך לערוך באופן ידני perldl.conf והם מרוצים מהתוצאות שאתה יכול לשמור על
קובץ שימושי לעיון עתידי. הכנס אותו פנימה ~/.perldl.conf איפה זה ייאסף
אוטומטית או השתמש ב-"perl Makefile.PL PDLCONF=שם_קובץ_שלך" בפעם הבאה שתבנה PDL.

Q: 4.3 Do I צורך אַחֵר תוֹכנָה ל מוצלח מבצע?
עבור פונקציונליות ה-PDL הבסיסית אינך צריך שום תוכנה נוספת. עם זאת, חלק מ
מודולי PDL האופציונליים הכלולים בהפצה (בעיקר רוב הגרפיקה וחלק מהקלט/פלט
מודולים) דורשים התקנה של ספריות/תוכניות מסוימות אחרות. בדוק את הקובץ
תלות בהפצה לקבלת פרטים והנחיות כיצד להשיג אותם.

Q: 4.4 איך יכול I להתקין PDL in a לא סטנדרטי מקום?
כדי להתקין PDL במיקום לא סטנדרטי, השתמש באפשרות INSTALL_BASE בקטע "perl
שלב התצורה של Makefile.PL. לדוגמה, "perl Makefile.PL INSTALL_BASE=/mydir/perl5"
תגדיר את PDL להתקין בעץ המושרש ב-"/mydir/perl5". לפרטים נוספים
ראה "כיצד אוכל לשמור את ספריית המודול/ספרייה שלי?" ב-perlfaq8 ובסעיפים הבאים.
חלופה נוספת היא להשתמש ב-local::lib כדי לבצע את הרישום הכבד עבור הצורך
תצורה.

Q: 4.5 איך יכול I כּוֹחַ a לחלוטין לְנַקוֹת התקנה?
כדי להבטיח התקנה נקייה לחלוטין של PDL, תצטרך תחילה למחוק את ה
קבצי התקנה ותיקיות נוכחיים. אלה יהיו כל הספריות בשם "PDL" ב-
נתיב Perl @INC, קבצים בשם "*Pdlpp*" בכל ספריות "Inline" והתוכניות "pdl,
pdldoc, pdl2, perldl ו-pptemplate". לאחר מכן פשוט בנה והתקן כרגיל. זהו
הרבה יותר קל לעקוב אחריו אם אתה תמיד מתקין את "PDL" במיקום לא סטנדרטי.
ראה ש: 4.4 לעיל.

בינארי התפלגויות


Q: 4.5 מה בינרי הפצות יש לו זמין?
מידע על הפצות בינאריות של PDL ניתן למצוא בhttp://pdl.perl.org> . בְּ
כיום קיימות הפצות בינאריות של PDL עבור לינוקס (RedHat ודביאן), FreeBSD, Mac
OS X ו-Windows, אם כי ייתכן שהם לא הגרסה העדכנית ביותר.

אם מישהו מעוניין לספק הפצות בינאריות עבור ארכיטקטורות אחרות, זה
יתקבל בברכה. ספר לנו על pdl-porters@jach.hawaii.edu רשימת תפוצה. גַם
בדוק את מנהל החבילות של הפצת לינוקס שלך מכיוון שרבים כוללים כעת PDL. PPM עבור win32
זמינות גם גרסאות (הן 32bit ו-64bit).

Q: 4.6 האם PDL לָרוּץ on לינוקס? (וגם מה על חבילות?)
כן, PDL פועל על לינוקס ואכן חלק גדול מהפיתוח נעשה תחת לינוקס.
עַלhttp://pdl.perl.org> אתה יכול למצוא קישורים לחבילות עבור חלק מהגדולים
הפצות. בדוק גם את מנהל החבילות של ההפצה שלך (יאם, apt, urpmi,...) כמו
PDL נמצא כעת על ידי רבים מאלה.

Q: 4.7 האם PDL לָרוּץ תחת Windows?
PDL נבנה מצוין על Win32 באמצעות מהדרים של MinGW או של Microsoft. ראה את win32/INSTALL פילה
בהפצת מקור PDL לפרטים. מהדרים אחרים לא נבדקו - קלט
מתקבל בברכה. יש גם הפצה של PDL דרך ה-ppm של ActiveState, למרות זאת
אולי לא תמיד הגרסה העדכנית ביותר. PDL-2.006 בנוי מהקופסה על Strawberry
Perl ו-ActiveState Perl.

CVS, GIT, ו מתמשך התפתחות


Q: 4.8 פחית I לקבל PDL באמצעות CVS?
לא. פיתוח PDL נערך עם מאגר CVS מדצמבר 1999 עד אפריל 2009.
באפריל 2009 הפרויקט עבר למערכת בקרת גרסאות Git (ראה
<http://git-scm.com>).

Q: 4.9 איך do I לקבל PDL באמצעות גיט?
נניח שיש לך Git מותקן במערכת שלך ואתה רוצה להוריד את קוד המקור של הפרויקט
לתוך הספרייה "PDL". כדי לקבל גישה לקריאה בלבד למאגר, הקלד ב-
שורת הפקודה

שיבוט git git://git.code.sf.net/p/pdl/code pdl-code

למפתחי PDL רשמיים, כדי לקבל גישת קריאה/כתיבה לסוג המאגר ב-
שורת הפקודה

git clone ssh://USERNAME@git.code.sf.net/p/pdl/code pdl-code

Q: 4.10 I היה a בְּעָיָה עם מה היא Git גִרְסָה, אֵיך do I לבדוק if מישהו יש ל הוגש a
תיקון?
מערכת Sourceforge מכילה patch-manager שמכיל תיקונים שעדיין לא היו
הוחל על ההפצה. ניתן לגשת אליו דרך תפריט הכרטיסים ב-PDL's
עמוד הפרויקט של Sourceforgehttp://sourceforge.net/projects/pdl>.

בנוסף, אם אינכם רשומים לרשימת התפוצה, בדקו בארכיון של
רשימות תפוצה "pdl-porters" ו-"perldl". ראה שאלה 3.2 לפרטים.

Q: 4.11 I יש קיבל מפתחים גישה ל גיט, אֵיך do I להעלות my שינויים?
הדבר הראשון שעליך לעשות הוא לקרוא את התיעוד של Git וללמוד את היסודות אודותיו
Git. ישנם מקורות רבים זמינים באינטרנט. אבל הנה היסודות:

לפני שאתה מעלה את השינויים שלך, העבר אותם למאגר שלך

git add ...
git commit

או לשלב את שני אלה עם

git commit -a

ואז למשוך את כל השינויים שאחרים ביצעו

git pull origin

בדוק את ה-PDL לפני שאתה דוחף אותו למאגר הראשי. אם הקוד שבור עבורך,
אז סביר להניח שהוא שבור עבור אחרים והם לא ישמחו לקבל את ה-PDL האחרון שלהם
לא מצליח לבנות! הערה: git מקל מאוד לתחזק ענף פיתוח נפרד.
[TBD, ספק מידע כיצד].

לאחר מכן עדכן את המאגר המשותף (ב-SF.net) עם השינויים שלך

git לדחוף יחידת המוצא

PDL ז'רגון


Q: 5.1 מה is השחלה (הוא PDL a קורא חדשות) ?
למרבה הצער, בהקשר של PDL למונח השרשור יכולים להיות שניים שונים (אבל
קשור) משמעויות:

· כאשר מוזכר ב תתקין כיוונים ואולי במהלך תהליך הבנייה שיש לנו
המשמעות הרגילה של מדעי המחשב של ריבוי השחלות בראש (שימושי בעיקר ב
מכונות מרובות מעבדים או אשכולות)

· שרשור PDL של פעולות על piddles (כפי שהוזכר במסמכי האינדקס) הוא
איטרציה של פעולה בסיסית על פני תת-פרוסות מתאימות של שלוליות, למשל הפנימית
מוצר "פנימי $a, $b" של (3) pdl $a ו-a (3,5,4) pdl $b גורם ל-Piddle (5,4)
כאשר כל ערך הוא תוצאה של מכפלה פנימית של (3) pdl עם תת-פרוסה (3)
של ה-(3,5,4) הפילול. לפרטים בדוק PDL::Indexing

שרשור PDL מוביל באופן טבעי לקוד פוטנציאלי מקביל שיכול לעשות שימוש בריבוי
השחלה במכונות/רשתות מרובות מעבדים; שם יש לך את הקשר בין ה
שני סוגי שימוש במונח.

Q: 5.2 מה is a גלגול?
ובכן, משתנים סקלרים של PDL (שהם מופעים של מחלקה מסוימת של אובייקטים של Perl,
כלומר דברים מבורכים (ראה "perldoc perlobj")) נקראים בשפה הרווחת של PDL לעתים קרובות
שלוליות (לדוגמה, בדוק בארכיון רשימת התפוצה). טועה, ברור? אם לא, פשוט השתמש
התנאי בלול כאשר אתה מתייחס למשתנה PDL (מופע של אובייקט PDL כפי שאתה יכול
זכור) ללא קשר לנתונים האמיתיים שהמשתנה PDL מכיל.

טכני שאלות


Q: 6.1 מה is פרדל? מה is pdl2?
לפעמים "perldl" ("pdl2") משמש כמילה נרדפת ל-PDL. עם זאת, באופן קפדני, ה
השם "perldl" ("pdl2") שמור לקליפה הקטנה שמגיעה עם ה-PDL
הפצה ואמור לשמש ליצירת אב טיפוס אינטראקטיבי של סקריפטים PDL.
לפרטים בדוק perldl או pdl2.

Q: 6.2 איך do I לקבל מקוון לעזור ל PDL?
פשוט הקלד "עזרה" (קיצור דרך = "?") בהנחיית המעטפת "pdl2" והמשיך משם.
פקודה שימושית נוספת היא הפקודה "אפרופו" (קיצור דרך = "??"). נסה גם את "הדגמה"
הפקודה במעטפת "perldl" או "pdl2" אם אתה חדש ב-PDL.

מָנִיפּוּלָצִיָה OF שלוליות


Q: 6.3 I רוצה ל גישה מה היא שְׁלִישִׁי אלמנט of a pdl אבל $a[2] לא לעבוד ?!
ראה תשובה לשאלה הבאה מדוע התחביר הרגיל של מערך Perl לא עובד עבור פידלים.

Q: 6.4 השמיים Docs לומר שלוליות יש לו כמה סוג of מערך. אבל למה לא מה היא פרל מערך תחביר
לעבוד עם שלוליות אז ?
בסדר, אתה צודק במובן מסוים. הרופאים אומרים שאפשר לחשוב על שלוליות על מערכים. יותר
באופן ספציפי, זה אומר ( PDL::QuickStart ):

אני מוצא כשמשתמשים בשפת הנתונים של Perl זה הכי שימושי
לחשוב על משתני Perl @x סטנדרטיים כעל "רשימות" של גנריות
"דברים" ומשתני PDL כמו $x כ"מערכים" שיכולים להיות
הכלולים ברשימות או גיבובים.

אז, בעוד שאפשר להתייחס לשלוליות כסוג של מערך רב-ממדי, הם לֹא
מערכים במובן של Perl. במקום זאת, מנקודת המבט של פרל הם כמה מיוחדים
class (שמיושם כעת כמצביע אטום לכמה דברים בזיכרון) ו
לכן צריך פונקציות מיוחדות (או 'שיטות' אם אתה משתמש בגרסת OO) כדי לגשת
אלמנטים בודדים או מגוון של אלמנטים. הפונקציות/שיטות לבדיקה הן "ב" /
"סט" (ראה את הסעיף 'קטעים' ב-PDL::QuickStart ) או את פונקציית ה"פרוסה" החזקה
וחברים (ראה PDL::Slices ו-PDL::Indexing ובעיקר PDL::NiceSlice).

לבסוף, כדי לבלבל אותך לחלוטין, אתה יכול לקבל מערכי Perl של פידלים, למשל $spec[3] יכול
עיין ב-pdl המייצג, למשל, ספקטרום, כאשר $spec[3] הוא האלמנט הרביעי של
רשימת Perl (או מערך ;) @spec . זה אולי מבלבל אבל הוא מאוד שימושי!

Q: 6.5 איך do I שרשור שלוליות?
רוב האנשים ינסו ליצור שלוליות חדשות משלוליות ישנות באמצעות וריאציה כלשהי על פני
ערכת נושא: "$a = pdl([$b, 0, 2])", אבל זה לא עובד. הדרך לשרשרת שלוליות היא
להשתמש בפונקציה "חתול" (ראה גם "להוסיף" ו"דבק"). באופן דומה אתה יכול לפצל שלוליות
באמצעות הפקודה "כלב".

Q: 6.6 לִפְעָמִים I am מקבל אלה מוזר תוצאות מתי באמצעות במקום פעולות?
שאלה זו קשורה לפונקציה "inplace". מהתיעוד (ראה
PDL::QuickStart):

רוב הפונקציות, למשל log(), מחזירות תוצאה שהיא a
שינוי הטיעון שלהם. זה עושה טוב
תרגול תכנות. עם זאת, ניתן לבצע פעולות רבות
"במקום" וזה עשוי להידרש כאשר נמצאים מערכים גדולים
השימוש והזיכרון במחירים מוזלים. לנסיבות אלה ה
מסופק אופרטור inplace() אשר מונע את העותק הנוסף
ומאפשר לשנות את הטיעון. לְמָשָׁל:

$x = log($array); # מערך $ לא מושפע
log(inplace($bigarray)); # $bigarray השתנה במקום

וגם מהדוקטור!!:

ברור כאשר משתמשים בהם עם כמה פונקציות שאינן יכולות להיות
מיושם באתרו (למשל convolve()) עשויות להשפיע על השפעות בלתי צפויות
מתרחש!

Q: 6.7 מה is זֶה מוזר שימוש of מה היא מחרוזת שרשור מפעיל ".=" in PDL
תסריטים?
ראה את השאלה הבאה על מטלה ב-PDL.

Q: 6.8 למה יש לו שם שתיים אחר סוגים of משימה in PDL ?
זה נגרם מהעובדה שכרגע אופרטור ההקצאה "=" מאפשר רק
עומס יתר מוגבל. למטרות מסוימות של PDL התברר שיש צורך
יותר שליטה על עומס יתר של מפעיל הקצאה. לכן, PDL מעיין ב
אופרטור ".=" עבור סוגים מסוימים של מטלות.

Q: 6.9 איך do I סט a סט of ערכים in a גלגול?
ב-Perl 5.6.7 ומעלה ניתן לבצע את ההקצאה הזו באמצעות תתי שגרות lvalue:

pdl> $a = רצף(5); p $a
[0 1 2 3 4]
pdl> $a->slice('1:2') .= pdl([5,6])
pdl> p $a
[0 5 6 3 4]

ראה PDL::Lvalue למידע נוסף. PDL תומך גם בתחביר פרוסה דמוי מטריצה ​​באמצעות ה-
PDL :: מודול NiceSlice:

pdl> $a(1:2) .= pdl([5,6])
pdl> p $a
[0 5 6 3 4]

עם גרסאות של Perl לפני 5.6.7 or מתי ריצה תחת מה היא פרל הבאגים זה חייב
להיעשות באמצעות משתנה זמני:

pdl> $a = רצף(5); p $a
[0 1 2 3 4]
pdl> $tmp = $a->slice('1:2'); p $tmp;
[1 2]
pdl> $tmp .= pdl([5, 6]); # הערה .= !!
pdl> p $a
[0 5 6 3 4]

זה יכול להתבצע גם לביטוי אחד, אשר נראה לעתים קרובות בקוד PDL:

pdl> ($tmp = $a->slice('1:2')) .= pdl([5,6])
pdl> p $a
[0 5 6 3 4]

Q: 6.10 פחית I להשתמש a בלול in a מותנה ביטוי?
כן אתה יכול, אבל לא בצורה שבה כנראה ניסית קודם. לא ניתן להשתמש ב-a
לערבב ישירות בביטוי מותנה מכיוון שהוא בדרך כלל מוגדר בצורה גרועה. במקום זאת
ל-PDL יש שתי פונקציות שימושיות מאוד: "כל" ו"הכל". השתמש באלה כדי לבדוק אם יש או כולם
אלמנטים בפידל ממלאים קריטריון כלשהו:

pdl> $a=pdl ( 1, -2, 3);
pdl> print '$a יש לפחות אלמנט אחד < 0' if (כל $a < 0);
ל-$a יש לפחות אלמנט אחד < 0

pdl> print '$a אינו מובהק חיובי' אלא אם כן (כל $a > 0);
$a אינו חיובי ודאי

Q: 6.11 לוגי מפעילי ו שלוליות - '||' ו '&&' לא לעבוד!
זו בעיה נפוצה שאתה מנסה ליצור מערך מסכות או משהו דומה באמצעות a
לבנות כגון

$mask = which($piddle > 1 && $piddle < 2); # שגוי

זֶה עושה לֹא עֲבוֹדָה! מה שאתה מחפש הוא סיביות אופרטורים לוגיים '|' ו
'&' שפועלים על בסיס אלמנט אחר אלמנט. אז זה באמת מאוד פשוט: אל תשתמש
אופרטורים לוגיים ב-piddles מרובי אלמנטים שכן זה ממש לא הגיוני, במקום זאת
כתוב את הדוגמה כך:

$mask = which($piddle > 1 & $piddle < 2);

שעובד נכון.

מתקדם נושאים


Q: 6.12 מה is a ריק pdl ?
"null" הוא אסימון מיוחד ל'פידל ריק'. ניתן להשתמש ב-pdl null כדי לסמן ל-PDL
פונקציה שהיא אמורה ליצור פידל בגודל מתאים והקלד. Null שלוליות יכול
לשמש במקומות שבהם פונקציית PDL מצפה ל-an תפוקה or זמני ויכוח. תְפוּקָה ו
זמני טיעונים מסומנים ב- חֲתִימָה של פונקציית PDL עם ה-"[o]" ו
"[t]" מוקדמות (ראה את השאלה הבאה אם ​​אינך יודע מה חֲתִימָה של פונקציית PDL
הוא). לדוגמה, אתה יכול להפעיל את הפונקציה "sumover" באופן הבא:

sumover $a, $b=null;

שווה ערך ל-

$b = sumover $a;

אם זה עדיין נראה קצת עכור, בדוק את PDL::Indexing ו-PDL::PP לפרטים על התקשרות
מוסכמות, ה חֲתִימָה ו השחלה (ראה גם להלן).

Q: 6.13 מה is מה היא חֲתִימָה of a PDL פונקציה ?
השמיים חֲתִימָה של פונקציה הוא מושג חשוב ב-PDL. רבים (אך לא כולם) PDL
לפונקציה יש א חֲתִימָה אשר מפרט את הטיעונים ואת הטיעונים (המינימליים) שלהם
מימדיות. כדוגמה, הסתכלו על החתימה של הפונקציה "מקסימום":

'א(נ); [o] ב;'

זה אומר ש"מקסימום" דורש שני טיעונים, הראשון שבהם הוא (לפחות) אחד-
ממדי ואילו השני הוא אפס ממדי ו- an תפוקה טיעון (מסומן על ידי
המוקדמות "[o]"). אם הפונקציה נקראת עם פידלים בעלי מימד גבוה יותר ה
פונקציה תיקרא שוב ושוב עם פרוסות של פיידלס אלה של מתאים
מימד (זה נקרא השחלה ב-PDL).

לפרטים והסברים נוספים עיין ב-PDL::Indexing ו-PDL::PP .

Q: 6.14 איך יכול I תת מחלקה (לָרֶשֶׁת מ) שלוליות?
התשובה הקצרה היא: קרא PDL::Objects (למשל הקלד "help PDL::Objects" ב- perldl or
pdl2 צדף).

התשובה הארוכה יותר (שחולצה מ-PDL::Objects): מכיוון שאובייקט PDL הוא אטום
בהתייחס למבנה C, לא ניתן להרחיב את מחלקת PDL באמצעות נתונים נוספים באמצעות למשל
סיווג משנה (כפי שניתן לעשות עם אובייקט Perl מבוסס hash). כדי לעקוף את הבעיה הזו
ל-PDL יש תמיכה מובנית כדי להרחיב את מחלקת ה-PDL באמצעות יש יחס למבורך
חשיש. אתה יכול לקבל את יש להתנהג כמו הוא פשוט בכך שאתה מקצה את האובייקט PDL
לתכונה בשם "PDL" ולהגדיר מחדש את השיטה לְאַתחֵל(). לדוגמה:

חבילה FOO;

@FOO::ISA = qw(PDL);
תת אתחול {
שלי $class = shift;
$self שלי = {
creation_time => time(), # הארכה נחוצה :-)
PDL => PDL->null, # משמש לאחסון אובייקט PDL
};
לברך $עצמי, $מעמד;
}

לדוגמא נוספת בדוק את הסקריפט t/subclass.t בהפצת PDL.

Q: 6.15 מה on כדור הארץ is זֶה זרימת נתונים דברים ?
Dataflow הוא פרויקט ניסיוני שאתה לא צריך להתעסק בו (זה
לא אמור להפריע לתכנות הרגילות שלך). עם זאת, אם אתה רוצה לדעת, יש א
תסתכל על PDL::Dataflow. יש אפליקציות שייהנו מהתכונה הזו (ו
זה כבר עובד מאחורי הקלעים).

Q: 6.16 מה is PDL::PP?
תשובה פשוטה: PDL::PP הוא גם דבק בין ספריות חיצוניות ל-PDL וגם תמציתי
שפה לכתיבת פונקציות PDL.

תשובה מעט ארוכה יותר: PDL::PP משמש להרכבת הגדרות תמציתית מאוד לתוך XSUB
שגרות מיושמות ב-C שניתן לקרוא בקלות מ-PDL ואשר באופן אוטומטי
תמכו בהשרשור, בזרימת נתונים ובדברים אחרים מבלי שתצטרכו לדאוג בקשר לזה.

לפרטים נוספים בדוק את PDL::PP ואת הסעיף שלהלן על הרחבות של PDL.

Q: 6.17 מה קורה מתי I יש כמה אזכור ל מה היא אותו PDL אובייקט in אחר
משתנים (שיבוט, וכו?) ?
Piddles מתנהגים כמו אזכורים של פרל במובנים רבים. אז כשאתה אומר

$a = pdl [0,1,2,3];
$b = $a;

אז גם $b וגם $a מצביעים על אותו אובייקט, למשל ואז אומרים

$b++;

*לא* תיצור עותק של ה-piddle המקורי אלא רק יגדל במקום, שממנו אתה
יכול לשכנע את עצמך באמירה

הדפס $a;
[1 2 3 4]

אין לטעות בזה כזרימת נתונים שמחברת כמה אובייקטים *שונים* כך
ששינויים בנתונים מופצים בין ה-piddles המקושרים כל כך (אם כי, בוודאות
בנסיבות, פיצולים המוזרמים נתונים יכולים לחלוק פיזית את אותם נתונים).

חשוב לזכור את "אופי ההתייחסות" של פידלים בעת העברת שלוליות
לתוך תתי שגרות. אם אתה משנה את פידלי הקלט אתה משנה את הארגומנט המקורי, לֹא a
עותק שלו. זה שונה מכמה שפות אחרות לעיבוד מערך אבל עושה זאת
מעבר יעיל מאוד של פיצולים בין תתי שגרות. אם אינך רוצה לשנות את
טיעון מקורי אלא עותק שלו פשוט צור עותק במפורש (גם דוגמה זו
מדגים כיצד לבדוק כראוי א מפורש בקשה לעיבוד במקום, בהנחה
השגרה שלך יכולה לעבוד במקום):

sub myfunc {
שלי $pdl = shift;
if ($pdl->is_inplace) {
$pdl->set_inplace(0)
אחר} {
# שנה עותק כברירת מחדל
$pdl = $pdl->העתק
}
$pdl->set(0,0);
החזר $pdl;
}

שונות


Q: 6.18 מה I / O פורמטים יש לו נתמך by PDL ?
הגרסאות הנוכחיות של PDL כבר תומכות במספר לא מבוטל של פורמטי I/O שונים.
עם זאת, לא תמיד ברור איזה מודול מיישם אילו פורמטים. כדי לעזור לך למצוא
המודול המתאים לפורמט שאתה צריך, הנה רשימה קצרה של הרשימה הנוכחית של
פורמטי I/O ורמז באיזה מודול למצוא את היישום:

· פורמט קלט/פלט מהיר (בינארי) של חליטה ביתית עבור PDL מיושם על ידי מודול FastRaw

· מודול FlexRaw מיישם שיטות גנריות לקלט ופלט של נתונים 'גולמיים'
מערכים. במיוחד, הוא נועד לקרוא פלט מ- FORTRAN 77 UNFORMATTED
קבצים ופונקציית "כתיבה" ברמה נמוכה C, גם אם הקבצים דחוסים או
מרוכסן.

ייתכן שפונקציונליות FastRaw תיכלל במודול FlexRaw
בזמן כלשהו בעתיד.

· FITS I/O מיושם על ידי פונקציות "wfits"/"rfits" ב-PDL::IO::FITS.

· ניתן להשיג I/O קבצי ASCII בפורמטים שונים על ידי שימוש ב-"rcols" ו-"rgrep"
פונקציות, גם ב-PDL::IO::Misc .

· PDL::IO::Pic מיישמת ממשק למסנני NetPBM/PBM+ לקריאה/כתיבה של כמה
פורמטים פופולריים של תמונה; נתמך גם פלט של רצפי תמונות כסרטי MPEG,
קובצי GIF מונפשים ומגוון רחב של פורמטי וידאו אחרים.

· ב-CPAN אתה יכול למצוא את מודול PDL::NetCDF שעובד עם הנוכחי ששוחרר
גרסה של PDL 2.006.

לפרטים נוספים עיין ברשימה המפורטת יותר בתיעוד PDL::IO או ב-
תיעוד עבור המודולים הבודדים.

Q: 6.19 איך יכול I לערום a סט of 2D מערכים (תמונות) אל תוך a 3D גלגול?
בהנחה שכל המערכים הם באותו גודל ובפורמט כלשהו המוכר על ידי "rpic" (ראה
PDL::IO::Pic ) אפשר לומר:

השתמש ב-PDL::IO::Pic;
@names = qw/name1.tif .... nameN.tif/; # כמה שמות קבצים
$dummy = PDL->rpic($names[0]);
$cube = PDL->zeroes($dummy->type,$dummy->dims,$#names+1); # הפוך 3D piddle
עבור (0..$#names) {
# זו משימת הפרוסה
($tmp = $cube->slice(":,:,($_)")) .= PDL->rpic($names[$_]);
}

or

$cube(:,:,($_)) .= PDL->rpic($names[$_]);

עבור הקצאת הפרוסה באמצעות תחביר PDL::NiceSlice החדש והקצאות Lvalue.

לולאת for קורא את התמונות בפועל לתוך 2D piddle זמני שהערכים שלו הם אז
מוקצה (באמצעות האופרטור ".=" העמוס יתר על המידה) לפרוסות המתאימות של ה-3D Piddle
קוביית $.

Q: 6.20 איפה יש לו מבחן קבצים ל מה היא גרפיקה מודולים?
תשובה זו חלה בעיקר על PDL::Graphics::TriD (גרפיקת תלת מימד עצמאית של PDL
דגם) שהוא הקשה ביותר מבחינה זו. אתה מוצא כמה תסריטי בדיקה ב
הדגמות/TriD בהפצה. יש גם 3dtest.pl ו line3d.pl ב
ספריית PDL/Example/TriD. לאחר שבנית PDL אתה יכול לעשות:

perl -Mblib דוגמה/TriD/3dtest.pl

perl -Mblib דוגמה/TriD/line3d.pl

כדי לנסות את שתי תוכניות הבדיקה של TriD. הם מפעילים רק פונקציית TriD אחת כל אחד מלבד שלהם
הפשטות מקלה על ניפוי באגים במידת הצורך עם מאפר הבאגים של Perl, ראה perldbug.

התוכניות בספריית ההדגמה ניתנות להפעלה הכי קלה מה-"perldl" או "pdl2"
מעטפת אינטראקטיבית:

perl -Mblib perldl או perl -Mblib Perldl2/pdl2

ואחריו "demo 3d" או "demo 3d2" בהנחיה. "הדגמה" בפני עצמה תיתן לך רשימה
של הדגמות PDL הזמינות.

אתה יכול להריץ את סקריפטי הבדיקה בספריית Demos/TriD באופן ידני על ידי שינוי לזה
מדריך והפעלה

perl -Mblib

כאשר "קובץ בדיקה" ; צריך להתאים לדפוס "test[3-9].p" ולצפות בתוצאות. חלק מ
הבדיקות אמורות להעלות חלון שבו אתה יכול לשלוט (לפתל) באובייקטים התלת-ממדיים עם ה-
עכבר. נסה להשתמש בלחצן 1 של העכבר כדי להפוך את האובייקטים במרחב תלת-ממד, לחצן 3 בעכבר
הגדלה והקטנה, ו-'q' כדי להתקדם לשלב הבא של הבדיקה.

Q: 6.21 מה is TriD or PDL::TriD or PDL::Graphics::TriD?
שאלות מסוג זה צריכות להיות נחלת העבר עם מערכת העזרה המקוונת של PDL
מקום. פשוט נסה (לאחר ההתקנה):

un*x> pdl2
pdl> אפרופו טריד

בדוק את הפלט עבור להיטים מבטיחים ולאחר מכן נסה לחפש כמה מהם, למשל

pdl> עזרה PDL::Graphics::TriD

שימו לב שהמקרה חשוב עם "עזרה" אבל לא עם "אפרופו" .

Q: 6.22 PGPLOT עושה לֹא לכתוב הַחוּצָה PNG קבצים.
ישנם כמה מקורות לבעיות עם קבצי PGPLOT ו-PNG. ראשית, בעת הידור של
ספריות pgplot, ודא שאתה מבטל הערות לערכי ה-PNG ב- drivers.list קוֹבֶץ. לאחר מכן
בעת הפעלת 'make' כנראה קיבלת שגיאה כמו

ג

כדי לתקן זאת, מצא את השורה ב-'makefile' שמתחילה ב-'pndriv.o:' (זה ליד ה-
תַחתִית). שנה, למשל, ./png.h ל-/usr/include/png.h, אם זה המקום שבו הכותרת שלך
קבצים הם (יש לך את החבילות libpng ו-libz devel, נכון?). עשה זאת עבור כולם
ארבע ערכים בשורה זו, ואז חזור והרץ "עשה".

שנית, אם כבר התקנת את מודול PGPLOT Perl ו-PDL, כנראה שניסית
לכתוב קובץ PNG וקיבלתי הודעת שגיאה קטלנית כמו:

ג

הסיבה לכך היא שמודול PGPLOT Perl אינו מקשר אוטומטית ל-png ו-z
ספריות. אז כאשר אתה מתקין את מודול PGPLOT Perl (גרסה 2.19) מ-CPAN,
אל תעשה "התקן PGPLOT", אלא פשוט "קבל PGPLOT". לאחר מכן צא מ-CPAN וידני
התקן את PGPLOT, קורא לקובץ ה-make כך:

ג/ Usr / lib>

בהנחה שקיימים קבצים כגון /usr/lib/libpng.so.*, /usr/lib/libz.so.*. אז תעשה
התקן "make;make test;make install;" סדר פעולות. עכשיו אתה יכול לכתוב קבצי png מ
PDL!

הרחבות OF PDL


Q: 7.1 I am הסתכלות ל a חבילה ל do XXX in PDL. איפה יהיה I להסתכל ל את זה?
התחנה הראשונה היא שוב "perldl" או "pdl2" והעזרה המקוונת או תיעוד PDL.
יש כבר הרבה פונקציונליות ב-PDL שאולי לא היית מודע לה. ה
הדרך הקלה ביותר לחפש פונקציונליות היא להשתמש בפקודה "apropos":

pdl> אפרופו 'אינטגרל'
ceil עגול לערכים אינטגרלים בפורמט נקודה צפה
קומה עיגול לערכים אינטגרליים בפורמט נקודה צפה
intover פרויקט באמצעות מידות אינטגרליות ל-N-1
rint עגל לערכים אינטגרלים בפורמט נקודה צפה

מכיוון שהפקודה אפרופו אינה מנוע חיפוש מתוחכם, ודא שאתה מחפש ב-a
כמה נושאים קשורים והשתמש בביטויים קצרים.

עם זאת יש סיכוי טוב שמה שאתה צריך אינו חלק מהפצת PDL. אתה
אז מומלץ לבדוקhttp://pdl.perl.org> איפה יש רשימה של חבילות
באמצעות PDL. אם זה לא פותר את הבעיה שלך, שאל ברשימת התפוצה, אם שום דבר אחר
אתה עשוי לקבל סיוע שיאפשר לך לממשק את החבילה שלך עם PDL בעצמך, ראה
גם השאלה הבאה.

Q: 7.2 פחית I גישה my C/Fortran ספריה שגרות in PDL?
כן, אתה יכול, למעשה זה מאוד פשוט עבור יישומים פשוטים רבים. מה שאתה רוצה זה
PDL מראש מעבד PP (PDL::PP). זה יאפשר לך ליצור ממשק פשוט ל-C שלך
שגרה.

שתי הפונקציות שאתה צריך ללמוד (לפחות קודם) הן "pp_def" שמגדיר את
ממשק קורא לפונקציה, ציון פרמטרי קלט ופלט, ומכיל
הקוד שמקשר לספרייה החיצונית. הפקודה השנייה היא "pp_end" שמסתיימת
הגדרות PP. לפרטים ראה את דף האדם של PDL::PP, אבל יש לנו גם דף עבודה
דוגמה כאן.

כפול שמונה_sum(int n)
{
int i;
סכום כפול, x;

סכום = 0.0; x=0.0;
עבור (i=1; i<=n; i++) {
x++;
sum += x/((4.0*x*x-1.0)*(4.0*x*x-1.0));
}
החזר 1.0/סכום;
}

אנו נראה לך כאן דוגמה כיצד אתה ממשק קוד C עם PDL. זה הראשון
דוגמה ויראה לך איך להעריך את המספר 8...

קוד C מוצג למעלה והוא פונקציה פשוטה המחזירה כפול ומצפה ל-an
מספר שלם - מספר האיברים בסכום - כקלט. ניתן להגדיר פונקציה זו ב-a
ספרייה או, כפי שאנו עושים כאן, כפונקציה מוטבעת.

נדחה את כתיבת ה-Makefile למועד מאוחר יותר. ראשית נבנה את ה-".pd"
קוֹבֶץ. זהו הקובץ המכיל קוד PDL::PP. אנו קוראים לזה "eight.pd" .

#
# pp_def מגדיר פונקציית PDL.
#
pp_addhdr (
'
כפול שמונה_sum(int n)
{
int i;
סכום כפול, x;

סכום = 0.0; x=0.0;
עבור (i=1; i<=n; i++) {
x++;
sum += x/((4.0*x*x-1.0)*(4.0*x*x-1.0));
}
החזר 1.0/סכום;

}
');

pp_def (
'שמונה',
Pars => 'int a(); כפול [o]b();',
Code => '$b()=eight_sum($a());'
);

# ודא תמיד שאתה מסיים את הצהרות ה-PP שלך עם
# pp_בוצע

pp_done();

ייחוד עם הדוגמה שלנו היא שכללנו את כל הקוד עם "pp_addhdr"
במקום לקשר אותו פנימה. זה רק למטרות של דוגמה, בטיפוס
באפליקציה תשתמש ב-"pp_addhdr" כדי לכלול קובצי כותרת. שימו לב שהטיעון ל
"pp_addhdr" מוקף במרכאות.

מה שהכי חשוב בדוגמה זו הוא הפקודה "pp_def". הטיעון הראשון
זה השם של הפונקציה החדשה שמונה , ואז מגיע חשיש שהבשר האמיתי:

· זה נותן את פרמטרי הקלט (כאן "א") ואת פרמטרי הפלט (כאן "ב"). ה
האחרונים מסומנים על ידי המפרט "[o]". לשני הטיעונים יכול להיות סוג
מפרט כפי שמוצג כאן.

ניתן לציין וריאציות רבות וגמישות נוספת בממשק. לִרְאוֹת
"perldoc PDL::PP" לפרטים.

· מתג זה מכיל את הקוד שאמור להתבצע. כפי שאתה יכול לראות זה די
שילוב מוזר של C ו-Perl, אבל בעצם זה בדיוק כמו שהיית כותב את זה ב-C, אבל
המשתנים המועברים מ-PDL מטופלים בצורה שונה ויש להפנות
עם '$' קודם.

יש גם פקודות מאקרו פשוטות להעביר מצביעים לנתונים ולקבל את הערכים של
כמויות אחרות של Perl, עיין בדף המדריך לפרטים נוספים.

לבסוף שים לב לקריאה "pp_done()" בסוף הקובץ. זה הכרחי בכל PP
קבצים.

בסדר. אז עכשיו יש לנו קובץ עם קוד שאנחנו מאוד רוצים להשתמש בו ב-Perl דרך PDL. ל
לעשות את זה אנחנו צריכים להרכיב את הפונקציה, וכדי לעשות את זה אנחנו צריכים Makefile.

השתמש ב-PDL::Core::Dev;
השתמש ב-ExtUtils::MakeMaker;
PDL::Core::Dev->import();

$package = ["eight.pd",Eight,PDL::Eight];
%hash = pdlpp_stdargs($package);

WriteMakefile(%hash);

sub MY::postamble {pdlpp_postamble($package)};

הקוד שלמעלה צריך להיכנס לקובץ בשם Makefile.PL, שאליו יש לקרוא לאחר מכן
בדרך Perl הסטנדרטית: "perl Makefile.PL" . זה אמור לתת לך Makefile ו
הפעלת "make" אמורה להרכיב עבורך את המודול ו-"make install" יתקין אותו עבור
לך.

Q: 7.3 איך יכול I ממשק חבילה XXX in PDL?
שאלה זו קשורה קשר הדוק לקודמתה, וכפי שאמרנו שם, PDL::PP
מעבד קדם הוא הדרך הסטנדרטית של ממשק חבילות חיצוניות עם PDL. הכי
הדרך הרגילה להשתמש ב-PDL::PP היא לכתוב שגרת ממשק קצרה, עיין ב-PDL::PP perldoc
עמוד והתשובה לשאלה הקודמת לדוגמאות.

עם זאת, ניתן גם לממשק חבילה ל-PDL על ידי כתיבה מחדש של הפונקציה שלך
PDL::PP ישירות. זה יכול להיות נוח במצבים מסוימים, במיוחד אם יש לך
שגרה שמצפה לפונקציה כקלט ואתה רוצה להעביר את הפונקציה פרל
פונקציה מטעמי נוחות.

דף PDL::PP perldoc הוא מקור המידע העיקרי לכתיבת הרחבות PDL::PP,
אבל זה מאוד שימושי לחפש קבצים בהפצה של PDL כמו רבים של הליבה
פונקציות כתובות ב-PDL::PP. חפש קבצים המסתיימים ב-".pd" שהוא בדרך כלל
סיומת מקובלת עבור קבצי PDL::PP. אבל יש לנו כאן גם דוגמה פשוטה.

הדוגמה הבאה תראה לך איך לכתוב פונקציה פשוטה אוטומטית
מאפשר השחלה. כדי להפוך את זה לתמצית הדוגמה היא בעלת פונקציה כמעט טריוויאלית, אבל
הכוונה היא להראות את היסודות של כתיבת ממשק PDL::PP.

נכתוב פונקציה פשוטה שמחשבת את המינימום, המקסימום והממוצע של a
בלול. במכונה שלי הפונקציה המתקבלת מהירה פי 8 מהפונקציה המובנית
"סטטיסטיקות" (כמובן שהאחרון גם מחשב את החציון).

בואו נקפוץ ישר פנימה. הנה הקוד (מתוך קובץ שנקרא "quickstats.pd")

#
pp_def('quickstats',
Pars => 'a(n); [o]avg(); [o]max(); [o]min()',
קוד => '$GENERIC(a) curmax, curmin;
$GENERIC(a) tmp=0;
לולאה(n) %{
tmp += $a();
if (!n || $a() > curmax) { curmax = $a();}
if (!n || $a() < curmin) { curmin = $a();}
%}
$avg() = tmp/$SIZE(n);
$max() = curmax;
$min() = curmin;
'
);

pp_done();

האמור לעיל עשוי להיראות כמו תערובת מבלבלת של C ופרל, אבל מאחורי המוזר
תחביר טמון בשפה חזקה מאוד. בואו ניקח את זה שורה אחר שורה.

השורה הראשונה מצהירה שאנו מתחילים בהגדרה של פונקציית PDL:PP שנקראת
"Quickstats".

השורה השנייה חשובה מאוד מכיוון שהיא מציינת את פרמטרי הקלט והפלט של
פוּנקצִיָה. a(n) אומר לנו שיש פרמטר קלט אחד שאליו נתייחס כ"a"
אשר צפוי להיות וקטור באורך n (כמו כן מטריצות, הן מרובעות והן
מלבני ייכתב כ-"a(n,n)" ו-"a(n,m)" בהתאמה). כדי לציין זאת
משהו הוא פרמטר פלט שמנו "[o]" לפני השמות שלהם, אז מפנים אחורה
לקוד אנו רואים ש-avg, max ו-min הם שלושה פרמטרי פלט, שכולם כן
סקלרים (מכיוון שאין להם גודל ממדי מצוין.

השורה השלישית מתחילה את הגדרת הקוד שהיא בעצם C טהורה אבל עם כמה
פונקציות נוחות. $GENERIC היא פונקציה שמחזירה את סוג C של הארגומנט שלה -
כאן פרמטר הקלט א. לפיכך שתי השורות הראשונות של קטע הקוד משתנות
הצהרות.

מבנה הלולאה(n) הוא פונקציית נוחות שעוברת בלולאה על הממד הנקרא n in
סעיף הפרמטרים. בתוך לולאה זו אנו מחשבים את הסכום המצטבר של הקלט
וקטור ולעקוב אחר ערכי המקסימום והמינימום. לבסוף אנו מקצים את המתקבל
ערכים לפרמטרי הפלט.

לבסוף אנו מסיימים את הצהרת הפונקציה שלנו עם "pp_done()" .

כדי להרכיב את הפונקציה החדשה שלנו אנחנו צריכים ליצור Makefile, שרק נפרט מאז
יצירתו נידונה בשאלה קודמת.

השתמש ב-PDL::Core::Dev;
השתמש ב-ExtUtils::MakeMaker;
PDL::Core::Dev->import();

$package = ["quickstats.pd",Quickstats,PDL::Quickstats];
%hash = pdlpp_stdargs($package);

WriteMakefile(%hash);

sub MY::postamble {pdlpp_postamble($package)};

דוגמה Makefile.PL

הפונקציה הסטטיסטית החדשה שלנו אמורה כעת להדר באמצעות שיטת Perl המנוסה: "perl
Makefile.PL; עשה" .

עליך להתנסות בפונקציה זו, לשנות את החישובים ואת הקלט והפלט
פרמטרים. בשילוב עם הדף PDL::PP perldoc זה אמור לאפשר לך במהירות
כתוב שגרות מתקדמות יותר ישירות ב-PDL::PP.

השתמש ב-PDL::FAQp מקוון באמצעות שירותי onworks.net



התוכניות המקוונות האחרונות של לינוקס ו-Windows