کلیدستان

نسخه‌ی کامل: تابع min
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام، من میخوام تابع min توی متلب پیاده سازی کنم 
لطفا راهنماییم کنید
 
سلام.
مهمترین مسئله این هست که ما نمی دونیم که ماتریسی که به ما می دهند، چند بعدی است. بنابراین برنامه را به شکلی می نویسیم که برای هر ماتریس دلخواه (با هر ابعادی) قابل اجرا باشه و به مشکل بر نخوره.
کدهای متلب برنامه :



کد:
clear all
close all
clc

A=[2 9 1 7; 6 4 5 8]
total_number=numel(A);
A=reshape(A,1,total_number);

A_min=A(1);
for nn=1:total_number
    if (A(nn)<A_min)
        A_min=A(nn);
    end
end
A_min

ماتریس A همان ماتریسی است که قراره min رو براش حساب کنیم.
دستور numel ، تعداد کل عناصر یک ماتریس رو به ما میده.
دستور reshape رو به کار بردیم تا ماتریس  A به ماتریسی با 1 ردیف و تعدادی ستون (ستون ها به اندازه تعداد کل عناصر ماتریس اولیه) تبدیل بشود. 
اولین عنصر ماتریس A را در A_min قرار می دهیم ( A_min متغیری است که قراره مقدار min ماتریس در اون ذخیره بشه).
سپس در حلقه for ، تک تک عناصر ماتریس A را چک می کنیم و هر وقت یک عنصر A از A_min کوچکتر باشد، مقدار آن را در A_min قرار می دهیم.
جواب نهایی A_min در آخر برنامه، در خروجی برنامه متلب، نمایش داده می شود.

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



کد:
A =

2 9 1 7
6 4 5 8


A_min =

1

جواب صحیح است. 
حالا برنامه رو با یک ماتریس سه بعدی هم چک می کنیم :



کد:
clear all
close all
clc

A(:,:,1)=[5 6;4 9];
A(:,:,2)=[3 2;7 8]

total_number=numel(A);
A=reshape(A,1,total_number);

A_min=A(1);
for nn=1:total_number
    if (A(nn)<A_min)
        A_min=A(nn);
    end
end
A_min

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


کد:
A(:,:,1) =

5 6
4 9


A(:,:,2) =

3 2
7 8


A_min =

2

 امیدوارم مفید بوده باشه. 
خیلی ممنون لطف کردین
خواهش می کنم.
موفق باشید.