۱۳۹۷/۰۶/۰۱, ۰۷:۱۴ ق.ظ
سلام.
در مورد انجمن فعال که برای برنامه نویسان حرفه ای مشکل گشا باشد، بنده انجمن انگلیسی زبان stackoverflow.com را توصیه می کنم. اگرچه انگلیسی زبان است، اما بهترین مورد در این زمینه می باشد و توصیه می شود که حتی اگر به زبان انگلیسی مسلط نیستید، باز هم سعی کنید که با ترجمه مناسب سوال خود به انگلیسی، آن را در وب سایت مورد نظر مطرح نمایید.
البته در هیچ وب سایتی به همه سوالات پاسخ داده نمی شود و تکراری نبودن و درست نوشتن سوال نیز مهم است، اما به هر حال، وب سایت مورد نظر، بهترین می باشد.
در کلیدستان نیز سعی می کنیم که در صورت داشتن زمان، به سوالات پاسخ داده شود، اما اگر زمان نداشته باشیم یا اینکه تسلط کامل به سوال مطرح شده نداشته باشیم، ترجیح می دهیم که پاسخی داده نشود تا کاربر در سایر منابع اینترنتی به جستجو بپردازد.
-------------------------------------------------------------------------
در مورد سوال شما :
ابتدا همان حالت مقداردهی ردیف به ردیف را ذکر می کنیم و بعد بیان می کنیم که با چه تغییری می توان آن را به مقداردهی ستون به ستون تغییر داد.
در انتهای دستور مقداردهی درون حلقه، علامت ; را نمی نویسیم تا بعد از اجرای هر گام از حلقه، مقدار ماتریس را در خروجی متلب (MATLAB) ببینیم و متوجه شویم که کدام عنصر از ماتریس، مقداردهی شده است.
در کد متلب (MATLAB) زیر، یک حلقه تو در تو (Nested Loop) کدنویسی کرده ایم که در هر گام خود، یکی از عناصر ماتریس را مقداردهی می کند و مقداردهی به صورت پر کردن ردیف به ردیف می باشد (مقداردهی بر اساس یک فرمول دلخواه است) :
3 خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
دستور zeros برای ساخت اولیه ماتریس بر اساس عنصرهای برابر مقدار 0 می باشد.
نتیجه اجرای کد متلب (MATLAB) بالا :
اکنون برای مقداردهی به صورت ستون به ستون، تنها کافی است که اندیس i و j را در پرانتز جلوی A تغییر دهیم (جابجا کنیم). بنابراین کد متلب (MATLAB) به صورت زیر خواهد بود :
نتیجه اجرای کد متلب (MATLAB) بالا :
-------------------------------------------------------------------------
در مورد سوال دوم، باید کد مورد نظر به طور کامل باشد تا بررسی شود. یعنی ببینیم که علامت های [ و ] برای چه منظوری به کار رفته اند.
اما مسلما برای یک ماتریس، شیوه ارجاعی که نوشتید، یک خطا را ایجاد می کند. به عنوان مثال، کد متلب (MATLAB) زیر، یک خطا را ایجاد می کند :
نتیجه اجرای کد متلب (MATLAB) بالا :
اما کد متلب (MATLAB) زیر صحیح می باشد :
نتیجه اجرای کد متلب (MATLAB) بالا :
بنابراین محل به کار رفتن علامت ها، کاربرد آنها را مشخص می کند.
در مورد انجمن فعال که برای برنامه نویسان حرفه ای مشکل گشا باشد، بنده انجمن انگلیسی زبان stackoverflow.com را توصیه می کنم. اگرچه انگلیسی زبان است، اما بهترین مورد در این زمینه می باشد و توصیه می شود که حتی اگر به زبان انگلیسی مسلط نیستید، باز هم سعی کنید که با ترجمه مناسب سوال خود به انگلیسی، آن را در وب سایت مورد نظر مطرح نمایید.
البته در هیچ وب سایتی به همه سوالات پاسخ داده نمی شود و تکراری نبودن و درست نوشتن سوال نیز مهم است، اما به هر حال، وب سایت مورد نظر، بهترین می باشد.
در کلیدستان نیز سعی می کنیم که در صورت داشتن زمان، به سوالات پاسخ داده شود، اما اگر زمان نداشته باشیم یا اینکه تسلط کامل به سوال مطرح شده نداشته باشیم، ترجیح می دهیم که پاسخی داده نشود تا کاربر در سایر منابع اینترنتی به جستجو بپردازد.
-------------------------------------------------------------------------
در مورد سوال شما :
ابتدا همان حالت مقداردهی ردیف به ردیف را ذکر می کنیم و بعد بیان می کنیم که با چه تغییری می توان آن را به مقداردهی ستون به ستون تغییر داد.
در انتهای دستور مقداردهی درون حلقه، علامت ; را نمی نویسیم تا بعد از اجرای هر گام از حلقه، مقدار ماتریس را در خروجی متلب (MATLAB) ببینیم و متوجه شویم که کدام عنصر از ماتریس، مقداردهی شده است.
در کد متلب (MATLAB) زیر، یک حلقه تو در تو (Nested Loop) کدنویسی کرده ایم که در هر گام خود، یکی از عناصر ماتریس را مقداردهی می کند و مقداردهی به صورت پر کردن ردیف به ردیف می باشد (مقداردهی بر اساس یک فرمول دلخواه است) :
کد پیاچپی:
clear all
close all
clc
A = zeros(3,3);
for i=1:3
for j=1:3
A(i,j) = (2*i)+j
end
end
A
3 خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
دستور zeros برای ساخت اولیه ماتریس بر اساس عنصرهای برابر مقدار 0 می باشد.
نتیجه اجرای کد متلب (MATLAB) بالا :
کد پیاچپی:
A =
3 0 0
0 0 0
0 0 0
A =
3 4 0
0 0 0
0 0 0
A =
3 4 5
0 0 0
0 0 0
A =
3 4 5
5 0 0
0 0 0
A =
3 4 5
5 6 0
0 0 0
A =
3 4 5
5 6 7
0 0 0
A =
3 4 5
5 6 7
7 0 0
A =
3 4 5
5 6 7
7 8 0
A =
3 4 5
5 6 7
7 8 9
A =
3 4 5
5 6 7
7 8 9
اکنون برای مقداردهی به صورت ستون به ستون، تنها کافی است که اندیس i و j را در پرانتز جلوی A تغییر دهیم (جابجا کنیم). بنابراین کد متلب (MATLAB) به صورت زیر خواهد بود :
کد پیاچپی:
clear all
close all
clc
A = zeros(3,3);
for i=1:3
for j=1:3
A(j,i) = (2*i)+j
end
end
A
نتیجه اجرای کد متلب (MATLAB) بالا :
کد پیاچپی:
A =
3 0 0
0 0 0
0 0 0
A =
3 0 0
4 0 0
0 0 0
A =
3 0 0
4 0 0
5 0 0
A =
3 5 0
4 0 0
5 0 0
A =
3 5 0
4 6 0
5 0 0
A =
3 5 0
4 6 0
5 7 0
A =
3 5 7
4 6 0
5 7 0
A =
3 5 7
4 6 8
5 7 0
A =
3 5 7
4 6 8
5 7 9
A =
3 5 7
4 6 8
5 7 9
-------------------------------------------------------------------------
در مورد سوال دوم، باید کد مورد نظر به طور کامل باشد تا بررسی شود. یعنی ببینیم که علامت های [ و ] برای چه منظوری به کار رفته اند.
اما مسلما برای یک ماتریس، شیوه ارجاعی که نوشتید، یک خطا را ایجاد می کند. به عنوان مثال، کد متلب (MATLAB) زیر، یک خطا را ایجاد می کند :
کد پیاچپی:
clear all
close all
clc
A = [1 2 3; 4 5 6; 7 8 9];
A[1][2]
نتیجه اجرای کد متلب (MATLAB) بالا :
کد پیاچپی:
>> kelidestan
Error: File: kelidestan.m Line: 7 Column: 2
Unbalanced or unexpected parenthesis or bracket.
اما کد متلب (MATLAB) زیر صحیح می باشد :
کد پیاچپی:
clear all
close all
clc
A = [1 2 3; 4 5 6; 7 8 9];
A([1,3],:)
نتیجه اجرای کد متلب (MATLAB) بالا :
کد پیاچپی:
ans =
1 2 3
7 8 9
بنابراین محل به کار رفتن علامت ها، کاربرد آنها را مشخص می کند.
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.