کلیدستان

نسخه‌ی کامل: حذف سطرهای خالی ماتریس (متلب - MATLAB)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام

من 105 ماتریس دو ستونی دارم که بعضی از سلول های این ماتریس ها خالی هستن و من میخوام کل سطر حاوی حداقل یه سلول خالی رو حذف کنم. برای این کار از این کد استفاده میکنم ولی این error رو  میده: A null assignment can have only one non-colon index.

کد:
indx=[];
for j=1:size(R,1)
for i=1:105
    if any((R(j,:,i)==0))
        indx(end+1,1)=j;
    end
end
R(indx,:,i)=[]
end

ممنون میشم راهنمایی کنید که چطور میشه این مشکل و برطرف کرد.
سلام.
وقتی شما یک ردیف (سطر) از ماتریس را حذف می کنید، تعداد ردیف های آن یکی کم شده، اما حلقه for را به گونه ای تعریف کرده اید که بر اساس تعداد ردیف اولیه ماتریس عمل می کند. یعنی مثلا اگر ماتریس در ابتدا 5 ردیف داشته باشد، فرض کنیم شما ردیف شماره 3 را حذف کنید، وقتی حلقه به مقدار برابر 5 برای ردیف می رسد، هنگام فراخوانی مشاهده می کند که ماتریس دارای ردیف شماره 5 نیست.
بنابراین برای رفع این مشکل، یک متغیر با مقدار اولیه 0 تعریف کنید. بعد با حذف هر ردیف، آن را یکی افزایش بدهید. بعد هنگام فراخوانی ردیف ها از ماتریس، باید این عدد را از اندیس (شماره) مربوط به فراخوانی ردیف ها کم کنید (بنابراین ردیف ها بر اساس شماره جدید خود فراخوانی می شوند).

Flower