من چگونگی چک کردن را به شما یاد می دهم، بعد خودتان کل کدها را چک کنید.
مطابق روشی که من گفتم (که متغیرها را در فایل ها ذخیره کرده و هنگام پردازش، آنها را از فایل خوانده و بعد نتیجه پردازش را در فایل هایی جدید ذخیره کنیم)، تنها در صورتی به مشکل بر می خوریم که کل ماتریس برای یک پردازش نیاز باشد. خوب حالا قصد داریم که ببینیم خط زیر با این روشی که من گفتم، اجرا میشه یا نه :
فرض می کنیم که X را در یک فایل متنی داریم (مثلا فایلی با نام X.txt)، ابتدا می خواهیم عبارت زیر را به دست آوریم :
عبارت فوق، ماتریسی را می دهد که هم اندازه ماتریس X است که هر عنصری از ماتریس X که بزرگتر از عدد 0 بوده، را به 1 تبدیل می کنیم و هر عنصری از ماتریس X که کوچکتر یا مساوی عدد 0 بوده را به 0 تبدیل می کنیم. ما یک فایل با نام X_bigger_than_0.txt می سازیم و هر عنصر ماتریس X را از فایل X.txt خوانده و مطابق منطق مورد نظر، به 0 یا 1 تبدیل کرده و در فایل X_bigger_than_0.txt ذخیره می کنیم.
خوب حالا می رویم سراغ عبارت زیر :
دستور sum برای جمع زدن عناصر ماتریس در یک جهت خاص می باشد که چون عدد 2 را در آن ذکر کرده اید، یعنی باید عناصر را در جهت ردیف ها (جمع اعداد هر ردیف) محاسبه کنیم. بنابراین باید از فایل X_bigger_than_0.txtمقادیر را تک تک فراخوانی کرده و با هم جمع بزنیم، نتیجه را هم که به صورت یک بردار است، در یک فایل با نام nz.txt ذخیره می کنیم.
بنابراین مطابق همین روندی که گفتم، شما سایر کدها را هم چک کنید و ببینید که به همین شیوه می توان آنها را اجرا کرد یا خیر.
به موردی که حدس می زنم ایراد بگیرید، نحوه دادن ورودی به تابع ها است، مثل کد زیر :
ممکنه بگید که خوب این خط از کدها، کل X را می خواهد. ولی پاسخ من این است که شما باید ورودی توابع را به صورتی تعریف کنید که نام فایل ها (مثلا X.txt) را دریافت کرده و بر اساس آن نام، فایل را فراخوانی کرده و عملیات ها را انجام بدهند.
مطابق روشی که من گفتم (که متغیرها را در فایل ها ذخیره کرده و هنگام پردازش، آنها را از فایل خوانده و بعد نتیجه پردازش را در فایل هایی جدید ذخیره کنیم)، تنها در صورتی به مشکل بر می خوریم که کل ماتریس برای یک پردازش نیاز باشد. خوب حالا قصد داریم که ببینیم خط زیر با این روشی که من گفتم، اجرا میشه یا نه :
کد پیاچپی:
nz = sum( ( X > 0 ), 2 );
فرض می کنیم که X را در یک فایل متنی داریم (مثلا فایلی با نام X.txt)، ابتدا می خواهیم عبارت زیر را به دست آوریم :
کد پیاچپی:
X > 0
عبارت فوق، ماتریسی را می دهد که هم اندازه ماتریس X است که هر عنصری از ماتریس X که بزرگتر از عدد 0 بوده، را به 1 تبدیل می کنیم و هر عنصری از ماتریس X که کوچکتر یا مساوی عدد 0 بوده را به 0 تبدیل می کنیم. ما یک فایل با نام X_bigger_than_0.txt می سازیم و هر عنصر ماتریس X را از فایل X.txt خوانده و مطابق منطق مورد نظر، به 0 یا 1 تبدیل کرده و در فایل X_bigger_than_0.txt ذخیره می کنیم.
خوب حالا می رویم سراغ عبارت زیر :
کد پیاچپی:
nz = sum( ( X > 0 ), 2 );
دستور sum برای جمع زدن عناصر ماتریس در یک جهت خاص می باشد که چون عدد 2 را در آن ذکر کرده اید، یعنی باید عناصر را در جهت ردیف ها (جمع اعداد هر ردیف) محاسبه کنیم. بنابراین باید از فایل X_bigger_than_0.txtمقادیر را تک تک فراخوانی کرده و با هم جمع بزنیم، نتیجه را هم که به صورت یک بردار است، در یک فایل با نام nz.txt ذخیره می کنیم.
بنابراین مطابق همین روندی که گفتم، شما سایر کدها را هم چک کنید و ببینید که به همین شیوه می توان آنها را اجرا کرد یا خیر.
به موردی که حدس می زنم ایراد بگیرید، نحوه دادن ورودی به تابع ها است، مثل کد زیر :
کد پیاچپی:
function I = idf(X)
ممکنه بگید که خوب این خط از کدها، کل X را می خواهد. ولی پاسخ من این است که شما باید ورودی توابع را به صورتی تعریف کنید که نام فایل ها (مثلا X.txt) را دریافت کرده و بر اساس آن نام، فایل را فراخوانی کرده و عملیات ها را انجام بدهند.
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.