اطلاعیه

Collapse
No announcement yet.

ضرب دو ماتریس

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ضرب دو ماتریس

    با سلام
    میشه این کارو با میکرو انجام داد؟
    آنکس که تو را شناخت جان را چه کند
    فرزنـــد و عيـــال و خـــانمان را چه کند

    #2
    پاسخ : ضرب دو ماتریس

    به نام خدا
    سلام
    من این کار رو برای زبان c توضیح میدم:
    در حالت کلی شما در زبان c (یا هر زبان دیگه) میتونی دو تا ماتریس رو در هم ضرب کنی
    فقط باید اون دو تا ماتریس:
    - شرایط ضرب شدن رو داشته باشن
    - درایه هاشون مشخص باشه
    حالا شرط ضرب دو ماتریس چیه؟
    اگه یکی ابعادش mxn بود بعدی باید nxk باشه
    جواب نهایی هم میشه یک ماتریس mxk
    یعنی: ماتریس اول اگه m سطر و n ستون داشته باشه
    ماتریس دوم باید n سطر و k ستون داشته باشه
    تا بشه در هم ضرب بشن
    در اینصورت ماتریس نهایی m سطر و k ستون خواهد داشت!
    چند تا لینک میذارم برات:

    http://www.purplemath.com/modules/mtrxmult3.htm

    http://www.dreamincode.net/forums/to...-two-matrices/

    http://code.wikia.com/wiki/Matrix_multiplication

    http://www.programiz.com/c-programmi...multiplication

    ...
    1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
    2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
    3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

    دیدگاه


      #3
      پاسخ : ضرب دو ماتریس

      در ادامه باید این رو هم اضافه کنم:
      شما میخوای با میکرو این کار رو انجام بدی!
      برای میکرو میشه به زبان های مختلف برنامه نوشت:
      C
      ++C
      assembly
      VB
      , ...
      کامپایلر شما چیه؟
      یعنی با چه نرم افزاری میخوای برنامه رو برای ریختن در میکرو
      به کدهای هگز تبدیل کنی؟
      هر نم افزار و هر زبان برنامه نویسی باشه
      مشکلی نیست
      اما باید بدونی که میکرو ها محدودیت هایی دارن!
      بذار با یک مثال باز کنم برات:
      مثلا یک میکرو حجم حافظه ی SRAMش برابر با 2 کیلوبایت باشه
      اعداد ماتریس شما رو هم از نوع char در نظر میگیریم! یعنی 8 بیت!
      زمانی که در هم ضرب میشن باید در یک متغیر 16 بیتی ریخته بشن!
      برای هر ضرب 3 تا ماتریس داری:
      - ماتریس mxn
      - ماتریس nxk
      - ماتریس mxk
      دو تای اول ورودی و سومی خروجی در نظر میگیریم
      پس ماتریس اولی و دومی حجمشون میشه mxn + nxk بایت
      و ماتریس دوم چون از نوع int هستش میشه 2xmxk بایت
      حالا برای راحتی فرض میکنیم ماتریسها مربعی باشن
      یعنی مثلا mxm باشن.
      طبق فرضیات فوق مجموع حافظه برای این ماتریس ها میشه:
      mxm + mxm + 2xmxm یعنی 4mxm
      حالا اگه m رو بذاریم مثلا 22 میشه چقدر؟ (قبلا محاسبه کردم)
      1936 بایت!
      یعنی حافظه پر شد!
      حالا یه سری متغیرهای کمکی دیگه هماین وسط نیاز داریم که ازشون حرفی نزدیم!
      خب میبینم که در اینجا محدودیت حافظه داریم!
      اما محدودیت سرعت هم داریم!
      اگه نیاز به محاسبات سریع باشه
      بازهم بحث سرعت مطرح میشه!
      در بهترین حالت mxmxm تا ضرب و mxm-m تا جمع داریم!
      فرض کن برای هر ضرب 20 کلاک و هر جمع 6 کلاک نیاز باشه
      (یه عالمه چیز دیگه این وسط هست که در نظر نگرفتیم)
      با اون عدد 22 که در بالا حساب کردیم، میشه:
      215732 تا کلاک!
      فرکانس میکرو هم 8 مگ در نظر بگیریم هر کلاک میشه 125 نانو ثانیه
      که حدودا میشه 0.027 ثانیه!
      روندش میکنیم 0.03 ثانیه! برای محاسبه ماتریس
      و ...
      :read:
      1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
      2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
      3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

      دیدگاه


        #4
        پاسخ : ضرب دو ماتریس

        تشکر از جواب کامل و سریع شما
        لذت بردیم.
        آنکس که تو را شناخت جان را چه کند
        فرزنـــد و عيـــال و خـــانمان را چه کند

        دیدگاه


          #5
          پاسخ : ضرب دو ماتریس

          سلام
          حالا اگه مشکل SRAM رو هم حل کنیم بازم بقول محمد صادق سرعتش زیاد نیست. چند مدت پیش بهم یه پروژه پیشنهاد شد که بدتر از این بود. طرف می خواست 2 مگابایت داده رو پروسس کنه با یه AVR ساده واسه این کارا باید سراغ قوی تر ها برید نه AVR که واسه کنترل چند تا چیز ساده طراحی شده. واسه همین DSPها و 32بیتی ها ساخته شدن دیگه.

          دیدگاه


            #6
            پاسخ : ضرب دو ماتریس

            ممنون از rozeh جان
            نه ببخشید، روح الامین
            نکته ی قشنگی اشاره کردی!
            یک بحثی هم در یک تاپیک دیگه گفته بودی: (چند مورد)
            "تا 5 سال دیگه پردازشگرهای 8 بیتی جمع میشن"
            "قیمت پردازشگرهای 32 بیتی ارزون شده"
            "هر کس باید بره سراغ پردازشگرهایی مانند ARM"
            "پردازشگرهای 64 بیتی ارزون قیمت برای کارهای ما در راهه"

            شاید بشه گفت یکی از دلایل استفاده از این پردازشگرهای 8 بیتی AVR
            بحث سادگی + قیمت فوق العاده ارزون (نه دیگه الان!) بود!
            همچنین که مثه الان بحث پردازش سیگنال مطرح نبود!

            طرف 15 سالشه اومده پیش من پروژه تشخیص صدا میخواد کار کنه!
            ما تا 5 سال پیش نمیدونستیم میکرو چیه!
            اصن یه وضی!

            با همه ی این اوصاف، بازهم همین AVRهای 8 بیتی هم غولی بودن برای خودشون.
            پروژه هایی مثل:
            - wave player
            - mp3 player
            - screen touch calculator
            - voice recognition
            , ...
            با AVR انجام شده
            اونم مثلا با اتمگا 32 !
            پروژه هایی با اتمگا8 دیدم که اصلا فکرشم نمیشه کرد!
            (البته با زبان اسمبلی بود)

            اما خب! نباید در گذشته بمونیم!
            32 بیتی ها
            برنامه نویسی سیستم عاملی
            سیستم عامل
            و ...
            همه چیزهایی هستن که باید خوب یاد بگیریم!
            :read:
            1: اللهم صل علي محمد و آل محمد و عجل فرجهم و ...
            2: دانش بهتره يا ثروت؟ بدون شعور هيچکدوم!
            3: دلا معاش چنان کن که گر بلغزد پاي *** فرشته‌ات به دو دست دعا نگه دارد (حافظ)

            دیدگاه


              #7
              پاسخ : ضرب دو ماتریس

              نوشته اصلی توسط محمدصادق رستمی
              اما خب! نباید در گذشته بمونیم!
              32 بیتی ها
              برنامه نویسی سیستم عاملی
              سیستم عامل
              و ...
              همه چیزهایی هستن که باید خوب یاد بگیریم!
              :read:
              دقیقا!
              دوباره همین جا از همه برقی ها می خوام که حداقل لینوکس رو یاد بگیرن. مثلا ابونتو خیلی خوبه! همین الان وارد کار بشین.

              دیدگاه


                #8
                پاسخ : ضرب دو ماتریس

                نوشته اصلی توسط msvmehdi
                با سلام
                میشه این کارو با میکرو انجام داد؟
                بله بریز تو آرایه ماتریس تو بعدم دونه دونه ضرب کن.
                hi miami

                دیدگاه

                لطفا صبر کنید...
                X