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


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

سوال : حذف تصادفی ستون های یک ماتریس

#2
سلام .
برای حذف یک یا چند عنصر از یک ماتریس ، باید آنها را مساوی علامت های [] قرار بدهید . بنابراین برای حذف تمامی عناصر موجود در یک ستون از یک ماتریس ، باید تمامی عناصر مربوط به آن ستون را برابر علامت های [] قرار بدهیم .
مثلا با کدهای زیر ، ابتدا ماتریس A را تعریف کرده و سپس ستون شماره 3 را حذف می کنیم :

کد:
clear all
close all
clc

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

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

کد:
A =

     1     2     3
     4     5     6


A =

     1     2
     4     5

خوب حالا میریم سر مسئله اصلی . فرض کنید ماتریس ما دارای تعداد N ردیف و M ستون باشد و ما بخواهیم که L تا از M ستون را به صورت تصادفی حذف کنیم . برای این منظور ، کدهای متلب زیر رو می نویسیم :

کد:
clear all
close all
clc

N=5;
M=10;
L=5;
A=rand(N,M)

for nn=1:L
    a=1;
    b=M-L+1;
    for_delete=round(a+(b-a)*rand(1));
    A(:,for_delete)=[];
end

A

ماتریس A را با اعداد تصافی (توسط دستور rand) ساخته ایم . شماره ستونی که باید حذف شود را در هر بار اجرای حلقه for به صورت تصادفی پیدا می کنیم (با دو دستور rand و round) . عدد مربوط به شماره ستونی که باید حذف شود را در for_delete ذخیره می کنیم . حد پایین تولید عدد تصادفی برابر a و حد بالا برابر b می باشد . دستور round برای گرد کردن اعداد اعشاری به کار می رود . دقت شود که با حذف یک ستون در هر بار اجرای حلقه ، اندازه ماتریس کوچکتر می شود و بنابراین حد بالای تولید عدد تصادفی برای شماره ستونی که باید حذف شود ، به صورت M-L+1 می باشد .
نتیجه اجرای کد متلب بالا :

کد:
A =

    0.2619    0.1068    0.9037    0.0305    0.6099    0.1829    0.1679    0.0596    0.0967    0.6596
    0.3354    0.6538    0.8909    0.7441    0.6177    0.2399    0.9787    0.6820    0.8181    0.5186
    0.6797    0.4942    0.3342    0.5000    0.8594    0.8865    0.7127    0.0424    0.8175    0.9730
    0.1366    0.7791    0.6987    0.4799    0.8055    0.0287    0.5005    0.0714    0.7224    0.6490
    0.7212    0.7150    0.1978    0.9047    0.5767    0.4899    0.4711    0.5216    0.1499    0.8003


A =

    0.1068    0.1829    0.0596    0.0967    0.6596
    0.6538    0.2399    0.6820    0.8181    0.5186
    0.4942    0.8865    0.0424    0.8175    0.9730
    0.7791    0.0287    0.0714    0.7224    0.6490
    0.7150    0.4899    0.5216    0.1499    0.8003

مشاهده می کنید که 5 ستون ماتریس ، به صورت تصادفی ، حذف شده است .
برای مسئله مورد نظرتون ، تنها باید ماتریس A رو تعریف کنید و اعداد مورد نظر خودتون رو در برنامه قرار بدید . coffee
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ


پیام‌های این موضوع
سوال : حذف تصادفی ستون های یک ماتریس - توسط 4i469x - ۱۳۹۲/۰۱/۲۰, ۰۷:۲۸ ب.ظ
RE: سوال : حذف تصادفی ستون های یک ماتریس - توسط admin - ۱۳۹۲/۰۱/۲۰, ۰۹:۲۲ ب.ظ
RE: سوال : حذف تصادفی ستون های یک ماتریس - توسط 4i469x - ۱۳۹۲/۰۱/۲۰, ۱۰:۱۲ ب.ظ
RE: سوال : حذف تصادفی ستون های یک ماتریس - توسط admin - ۱۳۹۲/۰۱/۲۰, ۱۰:۴۹ ب.ظ

پرش به انجمن:


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