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


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

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

#6
در همان کدها، دو ماتریس با نام های C و D ایجاد می کنیم.
ماتریس C درون حلقه for به عنوان نتیجه پردازش بر روی ماتریس B خواهد بود و ماتریس D نیز همان ماتریس نهایی است که نتایج کلی را در آن ذخیره کرده ایم (ماتریس خروجی نهایی).

کدهای متلب به صورت زیر می باشند :

کد:
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

D=A;
for nn=1:row
     for mm=1:column
         clear B C
         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
         C=B*2;
        
         % save to output matrix
         if (nn==row && mm==column)
             D((nn-1)*row_divide+1:end,(mm-1)*column_divide+1:end)=C;
         elseif (nn==row)
             D((nn-1)*row_divide+1:end,(mm-1)*column_divide+1:mm*column_divide)=C;
         elseif (mm==column)
             D((nn-1)*row_divide+1:nn*row_divide,(mm-1)*column_divide+1:end)=C;
         else
             D((nn-1)*row_divide+1:nn*row_divide,(mm-1)*column_divide+1:mm*column_divide)=C;
         end
     end
end
D

به عنوان مثال، پردازش بر روی B را به صورت دو برابر کردن (ضرب در 2) انتخاب کرده ایم (شما می توانید پردازش مورد نظر خود را بنویسید).

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

کد:
A =

    0.2760    0.4984    0.7513    0.9593    0.8407
    0.6797    0.9597    0.2551    0.5472    0.2543
    0.6551    0.3404    0.5060    0.1386    0.8143
    0.1626    0.5853    0.6991    0.1493    0.2435
    0.1190    0.2238    0.8909    0.2575    0.9293


D =

    0.5521    0.9967    1.5025    1.9186    1.6814
    1.3594    1.9195    0.5102    1.0944    0.5086
    1.3102    0.6808    1.0119    0.2772    1.6286
    0.3252    1.1705    1.3982    0.2986    0.4870
    0.2380    0.4476    1.7818    0.5150    1.8585

مشاهده می کنید که تمامی عناصر ماتریس نهایی (ماتریس D)، دو برابر عناصر ماتریس اولیه (ماتریس A) می باشند. (ماتریس های B و C هم که به طور موقت، درون حلقه for تعریف می شوند.)

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


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

پرش به انجمن:


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