انجمن سایت کلیدستان


رتبه موضوع:
  • 1 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
تبدیل یک ماتریس به چند ماتریس کوچکتر

تبدیل یک ماتریس به چند ماتریس کوچکتر

#4
کدهای متلب زیر رو می نویسیم که یک ماتریس کوچک 5 در 5 را در آن به ماتریس های 2 در 2 تقسیم می کنیم (در حلقه for) و البته تعدادی ماتریس هم با اندازه کوچکتر تولید می شود که به دلیل تقسیم ناپذیر بودن تعداد ردیف ها و ستون ها می باشد :

کد:
clear all
close all
clc

A=rand(5,5)
A_size=size(A);
row_divide=2;
column_divide=2;

if (mod(A_size(1),row_divide)==0)
    row=floor(A_size(1)/row_divide);
else
    row=floor(A_size(1)/row_divide)+1;
end

if (mod(A_size(2),column_divide)==0)
    column=floor(A_size(2)/column_divide);
else
    column=floor(A_size(2)/column_divide)+1;
end

for nn=1:row
    for mm=1:column
        clear B
        if (nn==row && mm==column)
            B=A((nn-1)*row_divide+1:end,(mm-1)*column_divide+1:end)
        elseif (nn==row)
            B=A((nn-1)*row_divide+1:end,(mm-1)*column_divide+1:mm*column_divide)
        elseif (mm==column)
            B=A((nn-1)*row_divide+1:nn*row_divide,(mm-1)*column_divide+1:end)
        else
            B=A((nn-1)*row_divide+1:nn*row_divide,(mm-1)*column_divide+1:mm*column_divide)
        end
        % your code for processing B matrix
    end
end

column_divide تعداد ستون ماتریس که می خواهیم ساخته شود و row_divide هم تعداد ردیف های آن می باشد.
ماتریس A را برای نمونه، بر اساس تعدادی اعداد تصادفی، با تابع rand ، ساخته ایم.
درون حلقه for ، هر بار ماتریس B ساخته می شود که بخشی از ماتریس بزرگ اصلی می باشد. شما این ماتریس رو ارجاع می دهید به تابعی که برای پردازش مورد نظرتون نوشته اید و نتیجه رو هم در ماتریسی دیگر ذخیره می کنید (اینها را باید خودتان طراحی کنید).

علامت های ; را از انتهای تعدادی از خط ها برداشته ام تا نتایج را ببینیم. شما می توانید دوباره در پایان خط ها، علامت ; بنویسید تا خروجی متلب زیاد شلوغ نشود.

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

کد:
A =

    0.7020    0.1878    0.9493    0.2052    0.0217
    0.5669    0.2340    0.7054    0.5010    0.4227
    0.1226    0.3137    0.8159    0.9157    0.6272
    0.2751    0.9777    0.4027    0.2122    0.9548
    0.7564    0.7198    0.3657    0.1774    0.0856


B =

    0.7020    0.1878
    0.5669    0.2340


B =

    0.9493    0.2052
    0.7054    0.5010


B =

    0.0217
    0.4227


B =

    0.1226    0.3137
    0.2751    0.9777


B =

    0.8159    0.9157
    0.4027    0.2122


B =

    0.6272
    0.9548


B =

    0.7564    0.7198


B =

    0.3657    0.1774


B =

    0.0856

برنامه رو برای چند ماتریس کوچک و اندازه های مختلف تست کنید تا خیالتون راحت بشه که درسته.
موفق باشید دوست عزیز Smile
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط 4i469x


پیام‌های این موضوع
تبدیل یک ماتریس به چند ماتریس کوچکتر - توسط 4i469x - ۱۳۹۲/۰۴/۲۹, ۰۳:۰۴ ب.ظ
RE: تبدیل یک ماتریس به چند ماتریس کوچکتر - توسط admin - ۱۳۹۲/۰۴/۲۹, ۰۴:۱۱ ب.ظ
RE: تبدیل یک ماتریس به چند ماتریس کوچکتر - توسط admin - ۱۳۹۲/۰۴/۳۰, ۰۱:۱۱ ق.ظ
RE: تبدیل یک ماتریس به چند ماتریس کوچکتر - توسط admin - ۱۳۹۲/۰۵/۰۲, ۰۱:۴۴ ق.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان