کلیدستان

نسخه‌ی کامل: حذف سطر یا ستون ماتریس (در برنامه نویسی متلب)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
باسلام و خسته نباشید
ببخشید میشه راهنمایی کنید که  چطور میشه تعدادی سطر یا ستون یک ماتریس را که مثلا ویژگی خاصی دارند مثلا سطرها یا ستونهای تمام صفر ماتریس را حذف کرد به طوریکه طبیعتا بعد ماتریس کوچکتر شود؟
با سپاس فراوان
با یک مثال، روش کلی رو شرح میدم.
یک ماتریس با نام A تعریف می کنیم و سپس هر سطر آن که تمامی عنصرهایش برابر صفر است را حذف می کنیم.

کدهای متلب :


کد:
clear all
close all
clc

A=[1 2 3;0 0 0;4 5 6;0 0 0]

s=size(A)
p=0;
for nn=1:s(1)
    if (A(nn-p,:)==zeros(1,s(2)))
        A(nn-p,:)=[];
        p=p+1;
    end
end
A

وقتی در متلب، یک یا چند عنصر را برابر علامت های [] قرار بدهیم، آن عنصرها حذف خواهند شد.

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

کد:
A =

     1     2     3
     0     0     0
     4     5     6
     0     0     0


s =

     4     3


A =

     1     2     3
     4     5     6

مشاهده می کنید که سطرهایی که همه عنصرهایشان برابر صفر است، حذف شده اند.
با سلام مجدد
ممنونم از توجه شما و جواب ارسالیتون اما متاسفانه من کد متلب شما رو عینا کپی می کنم توی متلب خودم و این خطا رو میده
A(nn-p,Smile=;
                  |
Error: Expression or statement is incomplete or incorrect.
مشکلش برطرف شد. حالا کپی کنید.
با تشکر و سپاس فراوان واقعا لطف کردید مشکلم برطرف شد. پایدار باشید ممنونم
خواهش می کنم.
موفق باشید.
با تشکر از ادمین عزیز، راه ساده تری هم هست که با یک خط دستور میشه سطر یا ستون تمام صفر رو حذف کرد. مثال:

کد پی‌اچ‌پی:
data=[0 0 0 0 0 0 0 00 0 2 3 4 0 1 00 0 1 2 3 0 0 0];
dataall(~data,1), : ) = [];  
data
( :, all(~data,1) ) = []; 

خط اول: تعریف ماتریسی با سطر و ستون صفر
خط دوم: حذف تمامی سطرهای صفر
خط سوم: حذف تمامی ستون های صفر

منبع:
http://www.mathworks.com/matlabcentral/a...nd-columns