رفتن به مطلب

تاپیک رفع اشکال و بحث پیرامون یادگیری متلب در تابستان 92


M!Zare

پست های پیشنهاد شده

سلام.

من میخوام یک سری نقاط در متلب رسم کنم و کنار هر نقطه شماره اون که در واقع شماره iteration اون نقطه هست بنویسم. بعد میخوام نقاط به ترتیب شمارشون به هم وصل کنم. در واقع یه چرخه دارم. باید از چه دستوری استفاده کنم؟

با تشکر

لینک ارسال
  • پاسخ 119
  • ایجاد شد
  • آخرین پاسخ

بهترین ارسال کنندگان این موضوع

بهترین ارسال کنندگان این موضوع

سلام.

من میخوام یک سری نقاط در متلب رسم کنم و کنار هر نقطه شماره اون که در واقع شماره iteration اون نقطه هست بنویسم. بعد میخوام نقاط به ترتیب شمارشون به هم وصل کنم. در واقع یه چرخه دارم. باید از چه دستوری استفاده کنم؟

با تشکر

 

سلام دوست عزیز

شماره ها رو با دستور text می تونین بنویسین، برای رسم خط ها هم می تونین از plot استفاده کنین.

لینک ارسال
سلام دوست عزیز

شماره ها رو با دستور text می تونین بنویسین، برای رسم خط ها هم می تونین از plot استفاده کنین.

تشکر از شما.

بله اما من یه حلقه for دارم. شمارنده در هر تکرار عوض میشه. پس یک تکست معمولی نیست و هر بار باید یکی به عدد اضافه بشه. در ضمن باید نقاط به هم وصل بشن تا سیکل کامل بشه.

لینک ارسال
تشکر از شما.

بله اما من یه حلقه for دارم. شمارنده در هر تکرار عوض میشه. پس یک تکست معمولی نیست و هر بار باید یکی به عدد اضافه بشه. در ضمن باید نقاط به هم وصل بشن تا سیکل کامل بشه.

 

خواهش می کنم، مثلا یه همچین کدی:

 

clear;
A = rand(2,5);

for i = 1:5
   plot(A(1,i),A(2,i),'.r','MarkerSize',20)
   text(A(1,i) + 0.01 ,A(2,i) + 0.01,num2str(i))
   hold on
   if i>1
       plot([x1 A(1,i)],[y1  A(2,i)],'b','LineWidth',3)
   end
   x1 = A(1,i);
   y1 = A(2,i);
end

b5ccapl20vpb64zhqm0x.png

لینک ارسال
خواهش می کنم، مثلا یه همچین کدی:

 

clear;
A = rand(2,5);

for i = 1:5
   plot(A(1,i),A(2,i),'.r','MarkerSize',20)
   text(A(1,i) + 0.01 ,A(2,i) + 0.01,num2str(i))
   hold on
   if i>1
       plot([x1 A(1,i)],[y1  A(2,i)],'b','LineWidth',3)
   end
   x1 = A(1,i);
   y1 = A(2,i);
end

b5ccapl20vpb64zhqm0x.png

 

بله بسیار ممنونم از راهنمایی شما.

لینک ارسال
  • 1 month later...
سلاااااام.

 

دوستان میتونید این مسئله رو برای دوستم حل کنید؟؟

سلام.فرنوش جان دوستان باید در نظر داشته باشن که بچه های برق و مکانیک ممکن هست از روش حل این معادله اطلاعی نداشته باشن.پس بهتر هست که واضح تر مساله رو روی کاغذ حل کنند و در کد نویسی کمکشون خواهیم کرد ولی با این اطلاعات پاسخی دریافت نمیکنند.

برای حل یک مساله باید دقیق آن را متوجه شد.:w16:

لینک ارسال
سلام.فرنوش جان دوستان باید در نظر داشته باشن که بچه های برق و مکانیک ممکن هست از روش حل این معادله اطلاعی نداشته باشن.پس بهتر هست که واضح تر مساله رو روی کاغذ حل کنند و در کد نویسی کمکشون خواهیم کرد ولی با این اطلاعات پاسخی دریافت نمیکنند.

برای حل یک مساله باید دقیق آن را متوجه شد.:w16:

 

سلام.

 

مرسی مریمی:icon_redface:

 

خودمم احساس کردم دادهاش ناقصه ولی چون چیز زیادی از متلب نمیدونستم جدی نگرفتم.:ws3:

 

حالا دوستم میاد خودش دقیق بهتون میگه که چی میخواد.

 

بازم مرسی بخاطر راهنماییت.:icon_gol::icon_gol:

لینک ارسال
  • 2 weeks later...
با سلام.

میخوام عدد 1.76 رو به 1.8 در برنامم گرد کنم.ولی اگر از دستور round استفاده کنم به 2 گردش میکنه.چاره چیه؟ممنون

 

ساده ترین راهش اینه :

 

b=1.76

 

a=round(b*10)/10

لینک ارسال

خروجی زوایای متلب چیه؟من یک محاسبه رو با ماشین حساب که انجام میدم با متلب تفاوت داره.مثلا arctan (2/3) که یک محاسبه ساده هست.

لینک ارسال
خروجی زوایای متلب چیه؟من یک محاسبه رو با ماشین حساب که انجام میدم با متلب تفاوت داره.مثلا arctan (2/3) که یک محاسبه ساده هست.

باید در 180 ضرب و بر pi تقسیم کنیم.

لینک ارسال
اگر بخواهیم 0.1414 را به 0.15 گرد کنیم از چه دستور یا فنی باید استفاده کرد؟

 

 

b=0.1414

a=round((b*100)+1)/100

 

-------------------------

 

b=0.1414

a=ceil(b*100)/100

 

 

ceil نزدیکترین عدد بزرگتر مساوی رو میده

floor نزدیکترین عدد کوچکتر مساوی رو میده

round هم که رند منطقی میده

لینک ارسال

دو عبارت ماتریسی رو با هم جمع میکنم و حاصل جمع یک ماتریس ردیفی میشه...حالا میخوام از داده های این ماتریس جذر بگیرم.ولی نمیشه.

C=sqrt(A.^2+B.^2)

لینک ارسال

در دستور بعدی میخواهم خمش رو محاسبه کنم ولی در محاسبه آن نیروهای قبلی هم بر هر مقطع تاثیر میزاره.

for i=1:12F_B(i)=sum(F_N(12-i)).*(12-i)*0.15


i=i+1;
end

از این دستور استفاده میکنم ولی جواب نمیده. به عنوان مثال در مقطع دوازده نیروی خمشی من صفر هست چون اخرین مقطع هست ولی در مقطع اول تمامی نیروهای دیگه هم باید لحاظ بشن. اما این دستور هم خطا میده

لینک ارسال
دو عبارت ماتریسی رو با هم جمع میکنم و حاصل جمع یک ماتریس ردیفی میشه...حالا میخوام از داده های این ماتریس جذر بگیرم.ولی نمیشه.

C=sqrt(A.^2+B.^2)

 

 

شدنش که میشه فقط باید ماتریس هاتون هم بعد باشن که بتونید جمعشون کنید. یه نمونه کد

[font=Courier]A=[1 2 3 4];[/font][font=Courier]B=[5 6 7 8];[/font]
[font=Courier]sqrt(A.^2+B.^2)[/font]

 

 

در دستور بعدی میخواهم خمش رو محاسبه کنم ولی در محاسبه آن نیروهای قبلی هم بر هر مقطع تاثیر میزاره.

for i=1:12F_B(i)=sum(F_N(12-i)).*(12-i)*0.15


i=i+1;
end

از این دستور استفاده میکنم ولی جواب نمیده. به عنوان مثال در مقطع دوازده نیروی خمشی من صفر هست چون اخرین مقطع هست ولی در مقطع اول تمامی نیروهای دیگه هم باید لحاظ بشن. اما این دستور هم خطا میده

 

فرمول ریاضیتون رو دقیق بیان کنید تا بدونیم فرمولش چیه؟ خود حلقه تکرار فور ،متغیر حافظه شو به صورت دیفالت جلو میبره نیازی نیست خط آخر برنامه رو بنویسید و i رو یه دونه یه دونه زیاد کنید

لینک ارسال
شدنش که میشه فقط باید ماتریس هاتون هم بعد باشن که بتونید جمعشون کنید. یه نمونه کد

[font=courier]a=[1 2 3 4];[/font][font=courier]b=[5 6 7 8];[/font]
[font=courier]sqrt(a.^2+b.^2)[/font]

 

 

 

 

فرمول ریاضیتون رو دقیق بیان کنید تا بدونیم فرمولش چیه؟ خود حلقه تکرار فور ،متغیر حافظه شو به صورت دیفالت جلو میبره نیازی نیست خط آخر برنامه رو بنویسید و i رو یه دونه یه دونه زیاد کنید

f_n(11)*0.15
f_n(11)*0.3+f_n(10)*0.15
f_n(11)*0.45+f_n(10)*0.3+f_n(9)*0.15
f_n(11)*0.6+f_n(10)*0.45+f_n(9)*0.3+f_n(8)*0.15

اگر میخواستم بصورت دستی محاسبه کنم مثل این میشد

لینک ارسال
در دستور بعدی میخواهم خمش رو محاسبه کنم ولی در محاسبه آن نیروهای قبلی هم بر هر مقطع تاثیر میزاره.

for i=1:12F_B(i)=sum(F_N(12-i)).*(12-i)*0.15


i=i+1;
end

از این دستور استفاده میکنم ولی جواب نمیده. به عنوان مثال در مقطع دوازده نیروی خمشی من صفر هست چون اخرین مقطع هست ولی در مقطع اول تمامی نیروهای دیگه هم باید لحاظ بشن. اما این دستور هم خطا میده

 

من اینجوری نوشتم :

h=12;
f=10*ones(1,h) ;
for i=h:-1:1 
   m(i)=0 ;
   for j=h:-1:i
       m(i)=m(i)+f(j)*(j-i)*0.15 ;
   end
end

لینک ارسال
f_n(11)*0.15
f_n(11)*0.3+f_n(10)*0.15
f_n(11)*0.45+f_n(10)*0.3+f_n(9)*0.15
f_n(11)*0.6+f_n(10)*0.45+f_n(9)*0.3+f_n(8)*0.15

اگر میخواستم بصورت دستی محاسبه کنم مثل این میشد

 

چون دنباله ای که تشکیل میشه بازگشتی هست دو راهکار دارید...یا دو تا حلقه تکرار تو در تو بنویسید یا اینکه جمله اول رو به صورت آفست در خارج این حلقه تکرار محاسبه کنید. من روش دوم رو رفتم چون نخواستم حلقه تو در تو داشته باشم. از این ایده استفاده کردم که تفاضل دو جمله متوالی ضریب ثابتی از یک سری مجموع مشخص هست. اون جمله مجموع که مشخص هست رو با S تو کد زیر نشون دادم. اینم کد:

[font=Courier]F_B(1)=0.15*F_n(11);[/font]
[font=Courier][color=#0433ff]for[/color] i=2:11[/font]
[font=Courier]    S=0.15*sum(F_n(12-i:11));[/font]
[font=Courier]    F_B(i)=F_B(i-1)+S;[/font]
[color=#0433FF][font=Courier]end[/font][/color]

 

حس کردم که ماتریس سطری ۱۱ عنصره F_n برای ما مشخص است و قبل از این حلقه محاسبه شده. جملاتی که بالا نوشتید رو به ترتیب F_B(1) و F_B(2) و همین طور تا F_B(11) در نظر گرفتم.

لینک ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • اضافه کردن...