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


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

بلوک4*4

#4
(۱۳۹۲/۰۷/۰۹, ۱۱:۵۵ ق.ظ)'alma' نوشته: سلام دوباره و ممنون از کمکتون
پروژه ای که کار میکنیم مربوط به فشرده سازی تصویره.بعد از لود تصویر خام وخواندن تصویر  میخوایم که این ماتریس بزرگ رو به ماتریسهای4*4 تبدیل کنیم با دستورfor.مثال از سطر1تا4وستون1تا4 رو با یه ماتریس و از سطر5تا8وستون1تا4 و..... تا آخرین آرایه رو نمایش بده .ممنون از شما


 


از کد زیر استفاده کنید ، قبلا ادمین زحمت کشیده بود برای من این کد رو نوشته ، من به دلخواه تغییراتی توش دادم ولی در کل یک ماتریس رو به ماتریس های کوجچک با ابعاد دلخواه تجزیه میکنه و حتی میتونید این ماتریس های کوچک رو به ماتریس دیگه ای منتقل کنید. من حتی این کد رو توسعه دادم و برای یک ماتریس سه بعدی هم نوشتم که میاد و مکعب های کوچک رو از یک مکعب بزرگ جدا میکنه . خیلی راحته . موفق باشید.


کد:
A=m_fft_row;

A_size=size(A);
row_divide=121;
column_divide=121;

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 dat
if (nn==row && mm==column)
B=A((nn-1)*row_divide+1:A_size(1),(mm-1)*column_divide+1:A_size(2));
elseif (nn==row)
B=A((nn-1)*row_divide+1:A_size(1),(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:A_size(2));
else
B=A((nn-1)*row_divide+1:nn*row_divide,(mm-1)*column_divide+1:mm*column_divide);

end

اگر میخواهید روی این ماتریس کوچک پردازشی انجام بدید ، اینجا بنویسید و بعد خروجی رو مشخص کنید.

% save to output matrix

if (nn==row && mm==column)
D((nn-1)*row_divide+1:A_size(1),(mm-1)*column_divide+1:A_size(2))=dat;

elseif (nn==row)
D((nn-1)*row_divide+1:A_size(1),(mm-1)*column_divide+1:mm*column_divide)=dat;

elseif (mm==column)
D((nn-1)*row_divide+1:nn*row_divide,(mm-1)*column_divide+1:A_size(2))=dat1((nn-1)*row_divide+1:nn*row_divide,(mm-1)*column_divide+1:A_size(2));

else
D((nn-1)*row_divide+1:nn*row_divide,(mm-1)*column_divide+1:mm*column_divide)=dat;

end

end
end



 
دوست دارم زندگی رو . . . 
پاسخ
 سپاس شده توسط admin


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

پرش به انجمن:


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