تبليغاتX
آموزش c++ and visual c++ matlab - درس 7
C++ &Visual C++ & Matlab
آشنایی با زبانهای برنامه نویسی سی پلاس پلاس ویژوال سی و مطلب به همراه دانلود کد ها

 

: matlabآرایه های اسپارس در

 

 دارند؟matlab آیا می دانید آرایه اسپارس چیست ؟و چه فایده ای در

 

آرایه های اسپارس در حقیقت آرایه هایی هستند که باعث کاهش دادن حجم آرایه ها با عدم در نظر گرفتن مقادیر با مقدار صفر بوجود می آیند .

 

به مثال زیر توجه کنید :

 

 به وجود می آید .حال فرض کنید ماتریس زیر را ایجاد کرده ایم:eye همانطور که در مبحث ماتریس ها گفتیم یک ماتریس همانی با دستور

 

>> a=eye(10)

 

a =

 

     1     0     0     0     0     0     0     0     0     0

     0     1     0     0     0     0     0     0     0     0

     0     0     1     0     0     0     0     0     0     0

     0     0     0     1     0     0     0     0     0     0

     0     0     0     0     1     0     0     0     0     0

     0     0     0     0     0     1     0     0     0     0

     0     0     0     0     0     0     1     0     0     0

     0     0     0     0     0     0     0     1     0     0

     0     0     0     0     0     0     0     0     1     0

     0     0     0     0     0     0     0     0     0     1

 

آرایه   matlabهمانطور که می بینیم این ماتریس از 90 عنصر صفر تشکیل شده است و فقط 10 عنصر غیر  صفر دارد .در اینجا

 

های اسپارس را تعریف می کند .ماتریس بالا را به صورت اسپارس تعریف می کنیم :

 

 :sparseدستور

 

با استفاده از این دستور یک آرایه اسپارس را بوجود می آوریم:

 

>> b=sparse(a)

 

b=

 

   (1,1)        1

   (2,2)        1

   (3,3)        1

   (4,4)        1

   (5,5)        1

   (6,6)        1

   (7,7)        1

   (8,8)        1

   (9,9)        1

  (10,10)       1

 

 

همانطور که می بینیم مطلب یک آرایه اسپارس به وجود آورد به این صورت که از از آرایه های صفر صرف نظر کرد .و سطر و ستون و

 مقدار آن را ذکر کرد.اما فکر می کنید بیان کردن به این شکل چه فایده و تفاوتی دارد ؟یکی از فواید به این صورت کم کردن مقدارحافظه و     این امر را مشاهد می کنیم.whosفضای مورد نیاز است با دستور

 

>> whos

  Name      Size                    Bytes  Class

 

  a        10x10                      800  double array

  ans      10x10                      164  double array (sparse)

  b        10x10                      164  double array (sparse)

 

Grand total is 120 elements using 1128 bytes

 

که اسپارس بود 164 بایت حافظه اشغال شد. b  که غیر اسپارس بود 800 بایت فضا اشغال شد در صورتی که در آرایه a در آرایه

 

در زیر به چند تابع اسپارس اشره می کنیم :

 

:speyeدستور

 

 در بالا:b این دستور آرایه اسپارس همانی ایجاد می کند یعنی یه چیزی مثل ماتریس

 

>> a=speye(4)

 

a =

 

   (1,1)        1

   (2,2)        1

   (3,3)        1

   (4,4)        1

 

:fullدستور

 

این دستور یک ماتریس اسپارس را به فرم غیر اسپارس در می آورد:

 

>> b=full(a)

 

b =

 

     1     0     0     0

     0     1     0     0

     0     0     1     0

     0     0     0     1

 

 :findدستور

 

مختصات و مقادیر عناصر غیر صفر ماتریس را پیدا می کند.

 

 

>> a=eye(10);

>> find(a)

 

ans =

 

     1

    12

    23

    34

    45

    56

    67

    78

    89

   100

 

>> a=speye(4)

 

a =

 

   (1,1)        1

   (2,2)        1

   (3,3)        1

   (4,4)        1

 

>> find(a)

 

ans =

 

     1

     6

    11

    16

 

:nnzدستور

 

تعداد عناصر غیر صفر ماتریس را می دهد:

 

>> a=speye(4);

>> nnz(a)

 

ans =

 

     4

 

:nonzeros دستور

 

یک بردار ستونی شامل عناصر غیر صفر می دهد.

 

>> a=speye(4);

>> a(2,1)=5;

>> b=nonzeros(a)

 

b =

 

     1

     5

     1

     1

     1

 

:sponesدستور

 

عناصر غیر صفر ماتریس اسپارس را با یک جایگزین می کند.

 

>> a=speye(4);

>> a(2,1)=5;

>> a(2,2)=14;

>> a

 

a =

 

   (1,1)        1

   (2,1)        5

   (2,2)       14

   (3,3)        1

   (4,4)        1

 

>> d=spones(a)

 

d =

 

   (1,1)        1

   (2,1)        1

   (2,2)        1

   (3,3)        1

   (4,4)        1

 

:spyدستور

 

شکل پراکندگی ماتریس اسپارس را به صورت یک نمودار به تصویر می کشد.

برلی ماتریس بالا داریم.

 

spy(d)

+ نوشته شده در  جمعه 4 خرداد1386ساعت 11:34 قبل از ظهر  توسط عباس سلیمی | 
 
صفحه نخست
پست الکترونیک
آرشیو
 

 
درباره وبلاگ
با سلام به شما دوست عزیز که از این وبلاگ بازدید می فرمائید ضمن آرزوی توفیق برای شما دوست گرامی وبلاگ matlabseven در راستای اهداف جدید خود علاوه بر آموزش مطلب به آموزش دو برنامه دیگر سی پلاس پلاس و ویژوال سی خواهد پرداخت . امیدوارم به عنوان یک برنامه نویس تازه کار بتوانم اطلاعات جدیدی را در این زمینه هم منتقل نمایم .

با تشکر عباس سلیمی
کارشناس برق الکترونیک

آمار بازدید کنندگان
ip-location map it!
پیوندهای روزانه
برنامه Paint
قرار دادن عکس در پس زمینه درایوها
ساخت و تغییر فونت
تغییر دسکتاپ
محاسبه اوقات شرعی
پاسخ به چند سوال رايج در مورد Visual C++
pcode چیست؟
جلسه اول آشنایی با سیمولینک
جلسه چهارم آموزش GUI
جلسه سوم آموزشGUIi
جلسه دوم آموزش GUI
جلسه اول آموزش GUI
ادامه برنامه نویسی
آغاز برنامه نویسی در matlab
دانلود کتاب آموزش MATLAB
پورت های سریال-بخش آخر
پورتهای سریال –قسمت دوم
پورتهای سریال-قسمت اول
رسم نمودار-قسمت پنجم
رسم نمودار-قسمت چهارم
محصولات جدید matlabseven
رسم نمودار -قسمت سوم
رسم نمودار-قسمت دوم
رسم نمودار-قسمت اول
تبدیلات در مطلب
رشته ها-قسمت دوم
رشته ها-قسمت اول
محاسبات مربوط به زمان
چند دستور کاربردی
آرایه های سلولی
آرایه های اسپارس
چند جمله ای ها
اعداد مختلط
دسترسی به عناصر ماتریس
ایجاد ماتریس
وب سایت MATLAB
آرشیو پیوندهای روزانه
نوشته های پیشین
دی 1387
آذر 1387
آبان 1387
مهر 1387
شهریور 1387
اردیبهشت 1387
بهمن 1386
دی 1386
آذر 1386
آبان 1386
مهر 1386
شهریور 1386
مرداد 1386
تیر 1386
خرداد 1386
اردیبهشت 1386
پیوندها
سایت شهر اسفراین
آموزش مطلب -میهن بلاگ
به یاد بهترین و...
دهکده توریستی رویین
بیا تو امنیت !!!
مدارات الکترونیک
وبلاگ ایران سما
وبلاگ مهندسی صنایع
وبلاگ جامع برق و الکترونیک عماد
مهندسی صنایع و مقالات - ie313
وب سایت محمد شمس
نظر سنجی