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


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
حلقه for (کمک)

حلقه for (کمک)

#1
با سلام خدمت اساتید

بنده یه سوال در مورد حلقه تکرار for داشتم و اون اینکه در یک حلقه for که مثلا 3 بار تکرار میشه چه دستوری رو اضافه کنم که هر بار که حلقه تکرار میشه یک ماتریس (یا هر چیز دیگری ) به من خروجی بده
به مثال زیر توجه کنید    
 
a یک ماتریس سه بُعدی است

کد:
for   i=1:3
      (p=a(:,:,i
      end

در اینجا خروجی من ماتریس 

کد:
(a(:,:,3
 

خواهد بود ولی بنده می خوام هر سه ماتریس ذیل خروجیم باشه 

کد:
(a(:,:,1
(a(:,:,2
(a(:,:,3
 

ممنون اگر راهنمایی کنید

 

 
پاسخ

حلقه for (کمک)

#2
سلام.
لطفا از بلوک کد که دکمه آن در ادیتور انجمن هست، برای درج کدها استفاده کنید . خودتون به کدها نگاه کنید، کسی نمیتونه بخوندشون (تازه من کمی تغییرشون دادم تا بهتر بشن ). 
شما خروجیتون p هست، خوب خروجی رو هم چند بعدی بسازید تا در هر بعد آن، یک ماتریس قرار بگیرد. اگر اصرار دارید که حتما ماتریس های مجزا داشته باشید، مبحث زیر را بخوانید :

http://www.kelidestan.com/matlab/matlab-154.php
 

 

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

حلقه for (کمک)

#3
سلام
ممنون از راهنايى شما
از اون دكمه كد بى خبر بودم از اين به بعد استفاده مى كنم

اما در مورد مشكل من اين كه من حتما احتياج به خروجى هاى مجزا دارم 
و لينكى رو هم كه شما معرفى كرديد خوندم ولى فك نكنم به مشكل من ربطى داشته باشه
سر ازش در نياوردم
من فقط ميخوام از تمام مراحل انجام حلقم ماتريس هاى مجزا داشته باشم همين
ممنون اگر راهنمايى بفرماييد
 
پاسخ

حلقه for (کمک)

#4
ماتریس های مجزا، یعنی اینکه در هر بار اجرای دستورات حلقه، یک نام جدید برای ماتریس آن مرحله به کار رود. برای این منظور، باید از روش همان مبحث استفاده کنید تا بتوانید مثلا در حلقه ای با 5 بار اجرای دستورات، 5 تا ماتریس با نام های A1 و A2 و A3 و A4 و A5 داشته باشیم (از هر بار اجرا، یک ماتریس با نامی متفاوت حاصل شود). اون مبحث برای متغیر مثال زده، شما روش آن را برای ساخت ماتریس به کار ببرید.
 
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط hamidhpk

حلقه for (کمک)

#5
سلام مجدد و ممنون از اهتمام admin

والا من کلا هنگ کردم اگر کد زیر رو ببینید و راهنمایی کنید ممنون میشم

کد:
for i = 1:3

max=max(max(A(:,:,i)));

eval(['max', num2str(i) , ' = ' ,num2str(max) ,';']);

end

ماتریس A یک ماتریس 3 بُعدی است
بنده یک حلقه تعریف کردم که  ماکزیمم تک تک ماتریس های ماتریس 3 بُعدی  A  رو بخونه و در آخر   سه تا   ماتریس که بیانگر مقدار max ماتریس های مذکور باشد خروجی دهد .
اما فقط مرحله اول حلقه انجام می شود و ادامه نمی دهد چرا؟؟؟
توجه : بنده آخرین باری که با متلب کار کردم 6 سال پیش بود اون هم در حد نوشتن چنتا برنامه ساده برای دانشگاه
و الان حدود 10 روزه که دوباره دارم با متلب کار می کنم اونم برای نوشتن برنامه های پردازش تصاویر پس در نتیجه به بنده نخندید بزودی با کمک شما راه میفتم
پاسخ

حلقه for (کمک)

#6
ابتدا مراقب باشید که max نام تابع است و شما نمی توانید متغیری با این نام تعریف کنید. نتیجه عبارتی که در حلقه نوشته اید، یک عدد است، نه یک ماتریس. پس می توان کدهای زیر را نوشت و نیازی به آن روش نیست :

کد:
clear all
close all
clc

A(:,:,1)=[1 2; 3 4];
A(:,:,2)=[5 6; 7 8];
A(:,:,3)=[9 10; 11 12];

maximum=zeros(1,3);
for i=1:3
    maximum(i)=max(max(A(:,:,i)));
end

m1=maximum(1)
m2=maximum(2)
m3=maximum(3)

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

کد:
m1 =

     4


m2 =

     8


m3 =

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

حلقه for (کمک)

#7
تشكر از راهنمايى شما
اما ماتريس واقعى پروژه من ٢٠٠ بُعديه اونو چيكار كنم؟
پاسخ

حلقه for (کمک)

#8
بنابراین راه حلش همان مبحثی است که گفتم. ابتدا یک برنامه ساده بنویسید تا عملکرد دستور eval را خوب متوجه بشوید، سپس درون حلقه، می توانید 200 تا ماتریس با نام های A1 تا A200 بسازید.
 
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط شماره مجازی امارات


پرش به انجمن:


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