رفتن به مطلب

با هم متلب یاد بگیریم


M!Zare

ارسال های توصیه شده

مشاهده بفرمایید:ws52:

x4kerchjtaamo87amg2.jpg

 

4% چرا نوشتی؟؟ چرا عدد میزاری؟ همون f بزار بمونه دیگه

 

من ننوشتم آقای چاپمن نوشته:ws3:

 

اقای چاپمن اشتباه کرده!!!!

باید یا f g e یکی از اینا نوشته بشه که توضیحش را بالا دادم

عدد گذاشتن که معنا نداره اخه

 

من یه توضیح اضافه کردم؛ شاید مشکل حل بشه:

 

fprintf_f.JPG

لینک به دیدگاه
  • پاسخ 325
  • ایجاد شد
  • آخرین پاسخ

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

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

میریم سراغ اعداد مختلط:

 

x=1;

y=-1;

theta_3=atan(x/y)*180/pi

 

theta_3 =

 

-45

theat_5=atan2(y,x)*180/pi

 

theat_5 =

 

-45

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

 

atan2 بیانگر آرك تانژانت چهارناحيه‏ اي هست. در شبیه‏ سازی مکانیزمها برای ساده کردن کار، لازم شده که چنین تابعی تعریف بشه تا در روابط سینماتیک [معکوس] و دینامیک [معکوس] مکانیزمها، به جای یک تابع چند ضابطه‏ ای از این تابع استفاده بشه. برای مطالعه بیشتر به کتابهای دینامیک ماشین، طراحی مکانیزمها، یا روباتیک مراجعه کنید.

گوشزد: آرك تانژانت رو با آرك تانژانت چهارناحيه‏ اي اشتباه نگیرید؛ یکی برای دو ناحیه تعریف شده و دیگری برای چهار ناحيه. ارتباطشون رو در زیر ببینید:

 

9ae3bf9236ba4ee5b18e80ab6c00e1cd.png

لینک به دیدگاه

با تشکر فراوان از جناب مهندس:icon_gol:

 

برای رسم نقاط در دستگاه مختصات مختلط از دستور plot استفاده میکنیم.اما جالبه که به کمک پارامترهایی میتوان شکل و رنگ نقطه رو تغییر داد.

zzz8u1b9ft12fs85mmtt.jpg

لینک به دیدگاه

>> grid on

>> gtext('Fluid')

>> text(0.5,0.5,'Fluid')

>> xlabel('Time')

>> ylabel('distance')

>> title('Learning

میتوان متنی را در مکانی خاص نوشت.

ابتدا دستگاه مختصات را با استفاده از دستور grid onخط کشی میکنیم.

دستور gtext برای نوشتن متن مورد استفاده قرار میگیرد.و پس از اجرای آن توسط ماوس مکان نوشته را خودمان مشخص میکنیم.

اما اگر بخواهیم نوشته از یک مختصات خاص شروع شود از دستور text استفاده کرده.و به ترتیب مختصات افقی و عمودی را وارد میکنیم.

با استفاده از دستور xlabel نوشته محور افقی را مینویسیم.و با استفاده از ylabel نوشته محور عمودی.

برای نوشتن عنوان نیز از دستور title استفاده مینماییم.

 

e0swxa18nde9ujur23i2.jpg

لینک به دیدگاه

z=1+0.5j;

square axis;

plot(z,'b.');

compass(z

چرا محور مختصات را دایره ای ترسیم میکنه?.حتی دستور فاصله گذاری محورهای مختصات رو هم اضافه کردم..ولی شکل اصلاح نشد.:ws52:

z=1+0.5j;

axis([-2 2 -2 2]);

square axis;

plot(z,'b.');

compass(z

 

0zbfos5yjli5xtyrku8b.jpg

لینک به دیدگاه

z=1+0.5j;

square axis;

plot(z,'b.');

compass(z

چرا محور مختصات را دایره ای ترسیم میکنه?.حتی دستور فاصله گذاری محورهای مختصات رو هم اضافه کردم..ولی شکل اصلاح نشد.:ws52:

z=1+0.5j;

axis([-2 2 -2 2]);

square axis;

plot(z,'b.');

compass(z

 

0zbfos5yjli5xtyrku8b.jpg

 

ـ عملاً فقط خروجی خط اول و آخر برنامه رو می بینید؛ چون فقط یک پنجره گرافیکی باز کردید.

ـ دستور square axis فکر نمی کنم درست باشه، شاید موقع paste جای کلمه هاش عوض شده باشه. برای درست دیدن برنامه ها شاید بشه از code استفاده کرد.

ـ دستور axis رو باید بعد از یک دستور رسم، مثل plot، استفاده کنید.

ـ متلب یک دنیا دستور داره؛ توی راهنمای متلب طرز به کار بردن دستور compass رو نگاه کردم؛ من کاربردی از اون رو در زمینه کاری خودم ندیدم. شما هم اگه ازش کاربردی نمی بینید، برید سراغ یه دستور دیگه و روش وقت نذارید. اما جواب پرسش شما رو بگم؛ compass از دستور polar برای رسم نمودار در مختصات قطبی استفاده می کنه. برای همین انتظار اینکه نمودارش رو در مختصات دکارتی نمایش بده انتظار به جایی نیست.

ـ در زیر انواع نمودارهای دوبعدی متلب رو از راهنمای متلب آوردم (البته غیر از اینها برای کارهای خاصی انواع دیگری هم داره، هرکس خودش هم می تونه انواع جدیدی بهش اضافه کنه)؛ سفارش من اینه که فقط اونهایی رو که به دردتون می خوره یاد بگیرید. برخلاف دیگران، سفارش می کنم که روی اونهایی که با ez شروع می شن وقت نذارید.

 

MATLAB2DpltTyp.JPG

لینک به دیدگاه

شیوه های نوشت آرایه و فراخوانی آن:

>> x=[1 2 3 4 5 6 7 8 9 10]

برای ایجاد هر ستون از کاما و یا space استفاده میکنیم.

x =

 

1 2 3 4 5 6 7 8 9 10

 

>> x(1:5)

داده های اول تا پنجم را مینویسد.

ans =

 

1 2 3 4 5

 

>> x(6:end)

 

ans =

 

6 7 8 9 10

 

>> x(1:2:10)

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

ans =

 

1 3 5 7 9

 

>> x(10:1)

 

ans =

 

Empty matrix: 1-by-0

 

>> x(10:-1:1)

 

ans =

 

10 9 8 7 6 5 4 3 2 1

برای شمارش معکوس باید از دستور بالا استفاده کرد...در غیر اینصورت برنامه قادر به بازگشت و کم کردن نیست.

لینک به دیدگاه

y=3*x

 

y =

 

3 6 9 12 15 18 21 24 27 30

 

y([1 7 4 9])

 

ans =

 

3 21 12 27

برای نمایش پاسخ های یک مسئله بصورت گزینشی میتوان از دستور بالا استفاده نمود.ترتیب آرایه ها مهم نیست.

لینک به دیدگاه

>> a=[1.25 3.67];

>> b=[1 2 a]

میشه بجای نوشتن آرایه های تکراری در یک بردار از آرایه های بردار متشابه استفاده کرد.

b =

 

1.0000 2.0000 1.2500 3.6700

 

>> b(3)=3

برای جایگزینی یک عدد بجای آرایه سوم این دستور بکار میرود.

b =

 

1.0000 2.0000 3.0000 3.6700

 

>> b(2)=-9

حتی میتوان اعداد منفی رو بجای یک عدد مثبت جایگزین کرد.

b =

 

1.0000 -9.0000 3.0000 3.6700

 

>> b(6)=10

برای جایگذاری اعداد در ستون هایی که در ماتریس اصلی نداریم ،شماره آرایه را مشخص کرده و مقدار آن را وارد میکنیم..برنامه بجای داده های مابین آخرین آرایه تا آرایه مربوطه صفر میگذارد و تعداد ستون ها را بسط میدهد.

b =

 

1.0000 -9.0000 3.0000 3.6700 0 10.0000

لینک به دیدگاه

>> x=0:5

آرایه های ما بین صفر و پنج را با در نظر گرفتن فاصله پیش فرض(یک)مینویسد.اعداد ابتدا و انتهایی را فقط مشخص میکنیم.

x =

 

0 1 2 3 4 5

 

>> x=0:2:5

علاوه بر مشخص کردن اعداد ابتدایی و انتهایی،فاصله بین اعداد را نیز مشخص میکنیم.

بترتیب از سمت چپ:شروع-نمو-انتها

x =

 

0 2 4

لینک به دیدگاه

>> linspace(0,25,5)

برای تقسیم فاصله بین دو عدد به تعداد فواصل مشخص مساوی این دستور مورد استفاده قرار میگیره و به ترتیب از سمت چپ مقدار اولیه،مقدار نهایی و تعداد اعداد را وارد میکنیم.

ans =

 

0 6.2500 12.5000 18.7500 25.0000

 

>> logspace(0,1,11)

اینن دستور نیز مانند دستور قبلی است با این تفاوت که بجای اعداد اولیه و نهایی ،توان های اولی و نهایی عدد 10 را وارد میکنیم.

ans =

 

Columns 1 through 10

 

1.0000 1.2589 1.5849 1.9953 2.5119 3.1623 3.9811 5.0119 6.3096 7.9433

 

Column 11

 

10.0000

 

>> x=[2 4 7];

>> length(x)

تعداد آرایه های بردار را مشخص میکند.

ans =

 

3

 

>> y=[2;4;6;7]

برای نمایش بردار بصورت ستونی،ما بین اعداد از ; استفاده میکنیم/

y =

 

2

4

6

7

 

>> d=y'

برای تبدیل ماتریس ستونی به سطری و بالعکس از ' استفاده میکنیم.

d =

 

2 4 6 7

لینک به دیدگاه

>> a=[2+5j 1+3j 8-j]

a =

 

2.0000 + 5.0000i 1.0000 + 3.0000i 8.0000 - 1.0000i

اگر بردار ما شامل اعدا مختلط باشد هنگام استفاده از ' نه تنها جای سطر و ستون عوض میشود،بلکه هر عدد مزدوج نیز میشود.

>> b=a'

 

b =

 

2.0000 - 5.0000i

1.0000 - 3.0000i

8.0000 + 1.0000i

برای جلوگیری از مزدوج شدن اعداد مختلط قبل از استفاده از ' نقطه میگذاریم.

>> c=a.'

 

c =

 

2.0000 + 5.0000i

1.0000 + 3.0000i

8.0000 - 1.0000i

لینک به دیدگاه

>> x=0:4;

>> y=5:5:25;

>> a=[x' y']

تعریف کردن ماتریس با استفاده از دستورهای پیشین

a =

 

0 5

1 10

2 15

3 20

4 25

 

>> a(5,2)

انتخاب یک درایه ماتریس :ابتدا سطر و سپس ستونه مربوطه را مشخص میکنیم.

ans =

 

25

 

 

لینک به دیدگاه

>> a=[1,0,0;1,1,0;1,-1,0;0,0,2]

 

a =

 

1 0 0

1 1 0

1 -1 0

0 0 2

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

>> a_1=a(:,2:3)

 

a_1 =

 

0 0

1 0

-1 0

0 2

 

لینک به دیدگاه

>> a=[2 4 7];

>> b=[3 5 1];

برای ضرب و تقسیم و به توان رساندن آرایه های نظیر به نظیر ماتریس در متلب قبل از علامت های ضرب و تقسیم و توان از dot استفاده میکنیم.

>> c=a.*b

 

c =

 

6 20 7

 

>> d=a.^b

 

d =

 

8 1024 7

 

>> e=a./b

 

e =

 

0.6667 0.8000 7.0000

 

لینک به دیدگاه

مثالی با توجه به مطالب خوانده شده.

تمام مطالبی که پس از % نوشته شده برای شرح بیشتر و نظم موضوع است و تاثیری بر روند حل ندارد.

An object is thrown vertically upward with an initial speed v, under acceleration of gravity g.Neglecting air resistance, determine and plot the height of the object as a function of time, from time zero when the object is thrown until it returns to the ground.

The height of the object at time t is h(t) = vt − 0.5*g*t^2

The object returns to the ground at time tg, whenh(tg) = vtg − 0.5*g*tg^2= 0 or tg =2*v/g

If the initial velocity v is 60 m/s, the following script will compute and plot the vertical height as a function of the time of flight.

 

>> %vertical motion under gravity

>> %define input value

 

>> g=9.8; %acceleration of gravity

 

>> v=60; %initial speed(m/s)

 

>> %calculate times

 

>> t_g=2*v/g; %time(s)to return to ground

 

>> t=linspace(0,t_g,256); %256 element time vector(s)

 

>> %calculate value for h(t)

 

>> h=v*t-0.5*g*t.^2; %height(m)

 

>> %plot h(t)

 

>> plot(t,h,':'),title('Vertical motion under gravity'),xlabel('Time(s)'),ylabel('Height(m)'),grid

 

s0wa0ofxy9kpri36khl.jpg

لینک به دیدگاه
  • 1 ماه بعد...

من ميخوام نمودار تغييير مكان پيرو بر اساس دوران بادامك(تغيير مكان و زاويه دوران بادامك و دارم) و بكشم بعد از اون 2 بار مشتق بگيرم .نموداراي اين 2 مشتقم ميخوام.تو matlab چه جوري برنامه شو بنويسم؟؟تو excel نمودار اولو كشيدم نميدونم درجه معادله چند انتخاب كنم(3-4 يا5).كه از اين معادله مشتق بگيرم.طرز نوشتن معادله رو ميگين؟؟؟؟؟ خواهشا هر كي ميدونه تا 2شنبه بگه. 3شنبه تحويلشه

لینک به دیدگاه
رسم دو چند جمله ای در یک نمودار:

u4n6uwth6jflvn7t6sn9.jpg

 

oy6c2s2qzm1zrsyqtice.jpg

میشه در مورد این برنامه توضیحی بفرمایید.:icon_gol:

 

 

 

 

ـ "اگر x يك بردار باشد و y بيش از يك ستون داشته باشد، دستور plot(x,y) نمودار تغييرات هركدام از ستونهاي ماتريس y را نسبت به x مي كشد." مرجع: صفحه 17 کتاب شگردهای عددی

ـ "اگر x و/يا y ماتريس باشد، دستور plot(x,y) نمودارهايي مشابه حالت پيش‏گفته مي كشد. البته x و y بايد از نظر ابعادي همخوان باشند." مرجع: صفحه 18 کتاب شگردهای عددی

ـ مشابه قوانین بالا برای ماتریسهای مختلط هم وجود داره.

 

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

نمونه ـ نمودارهای خطوط (تراز) افقی و عمودی و تصویر آنها تحت نگاشت همدیس w = z^2 به صورت زیر است:


% Engg Math, Kreyszig, Page: 806
% w = z^2
xc=0.5:0.5:2;yc=linspace(-2.5,2.5,50);
[xd,yd]=meshgrid(xc,yc);
yk=0.5:0.5:2;xk=linspace(-2.5,2.5,50);
[x,y]=meshgrid(xk,yk);
x=x.';y=y.';

z=x+i*y;
zd=xd+i*yd;

subplot(1,2,1)
plot(z,'LineWidth',2),hold on
plot(zd,'--','LineWidth',2)
axis('equal','tight')
xlabel('x'),ylabel('y'),title('z = x + iy')

w=z.^2;
wd=zd.^2;
subplot(1,2,2)
plot(w,'LineWidth',2),hold on
plot(wd,'--','LineWidth',2)
axis('equal','tight')
xlabel('u'),ylabel('v')
title(['w = u + iv = z^2'])

 

ConfMapngZ2.GIF

لینک به دیدگاه
من ميخوام نمودار تغييير مكان پيرو بر اساس دوران بادامك(تغيير مكان و زاويه دوران بادامك و دارم) و بكشم بعد از اون 2 بار مشتق بگيرم .نموداراي اين 2 مشتقم ميخوام.تو matlab چه جوري برنامه شو بنويسم؟؟تو excel نمودار اولو كشيدم نميدونم درجه معادله چند انتخاب كنم(3-4 يا5).كه از اين معادله مشتق بگيرم.طرز نوشتن معادله رو ميگين؟؟؟؟؟ خواهشا هر كي ميدونه تا 2شنبه بگه. 3شنبه تحويلشه

 

از چندجمله ایهای تکه ای باید استفاده کنید. از وقتش گذشته یا هنوز وقت دارید؟

لینک به دیدگاه

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

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

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

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

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

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

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

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


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