سئوالات و مشکلات در متلب (MATLAB)

irpersian20

عضو جدید
دوست عزیز ما یک آرایه دو بعدی داریم.
که اعداد بین مثلا 100 تا 500 هست
الان میخواهم در یک ماتریس دیگر فراوانی هر کدام رو داشته باشم.
ایا تابع اماده هست ، یاد دستی کد بزنیم؟ ممنون
 

irpersian20

عضو جدید
با درود
دوستان من 2 تا تابع نوشتم. و یک برنامه اصلی که تابع ها رو فراخوانی میکنه
حالا که اجرا میکنم، در wokrspace فقط مقادیر برنامه main رو میاره که چی ها هستند الان
میخواهم مقادیر متغیر های اون دو تا تابع هم بیاره که بتونم برنامه رو یک طوری به هر حال تریس کنم
 

caution_alx

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


132.png

من از ode به صورت یک کد ساده استفاده کردم...درسته آیا؟:cry:

(u=dsolve('(D2u)*x^2+tan(x)*(Du)+2*u=5','u(0)=0','Du(0)=0','y'
 

caution_alx

عضو جدید
فکر کنم بعد از فراخوانی تابع ها، اون ها رو هم ذخیره کنید، درست بشه​





 

meytim

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


مشاهده پیوست 256745

من از ode به صورت یک کد ساده استفاده کردم...درسته آیا؟:cry:

(u=dsolve('(D2u)*x^2+tan(x)*(Du)+2*u=5','u(0)=0','Du(0)=0','y'

اولین قدم اینه که صورت مسأله رو مشخص کنید تا خودتون بدونید که قراره چه چیزی رو حل کنید. برای این کار قبل از هر چیز باید دامنه و شرایط مرزی رو مشخص کنید. شرایط اولیه هم نمی خواد، چون در معادله متغیر زمان ندارید.
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
با درود
دوستان من 2 تا تابع نوشتم. و یک برنامه اصلی که تابع ها رو فراخوانی میکنه
حالا که اجرا میکنم، در wokrspace فقط مقادیر برنامه main رو میاره که چی ها هستند الان
میخواهم مقادیر متغیر های اون دو تا تابع هم بیاره که بتونم برنامه رو یک طوری به هر حال تریس کنم

خروجیهای تابعها رو بعد از اینکه توی برنامه main فراخوانی کردید، توی چند تا متغیر می ریزد که بعد از اجرا در فضای کاری در دسترس خواهند بود.
 

irpersian20

عضو جدید
خروجیهای تابعها رو بعد از اینکه توی برنامه main فراخوانی کردید، توی چند تا متغیر می ریزد که بعد از اجرا در فضای کاری در دسترس خواهند بود.

خوب تابع یک خروجی مثلا به ما میده اما درون تابع 10 تا متغیر بوده .. من میخواهوم بعد از اجرا برنامه اون 10 تا متغبر رو ، مقادیر ش داشته باشم
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
خوب تابع یک خروجی مثلا به ما میده اما درون تابع 10 تا متغیر بوده .. من میخواهوم بعد از اجرا برنامه اون 10 تا متغبر رو ، مقادیر ش داشته باشم
در این صورت باید اون 10 تا متغیر رو هم به عنوان خروجی تابع تعریف کنید و در فراخوانی هم اونها رو بریزید توی 10 تا متغیر. یا اینکه اون 10 تا متغیر رو هم در تابع و هم در برنامه main به صورت متغیر global تعریف کنید.

help global
 

irpersian20

عضو جدید
سلام
دوستان عزیز ، یک برنامه اجرا میکنیم و میره رو حالت Busy و میخواهیم وسط کار قطع کنیم و ادامه نده. چه کلید ترکیبی باید بزنیم؟
 

irpersian20

عضو جدید
با درود خسته نباشید
دوستان چرا وقتی من از int8 استفاده میکنم ، اکثر درایه های این عکس میشه 127 !!

I=imread('cameraman.tif');
I = uint8(I);
imshow(I);

I=imread('cameraman.tif');
I = int8(I);
imshow(I);


بعد اینکه اگر من به جای uint8 بزنم uint32 که دیگه اصلا اجرا نمیشه و خطا داره. راستش من سی ++ کار میکردم این موارد نبود..یکمی گیج شدم :cry:
 

irpersian20

عضو جدید
درود دوستان
axis چی کار میکنه؟
v1=[1, 3, 4, 6, 5, 2];
v2=[1, 2, 2, 3, 4, 2];
plot(v1, v2, 'ko')
axis([0 7 0 5])
 

irpersian20

عضو جدید
دوستان grid تابع نیست. تو متلب چی هستند این نوع متغیر ها؟
مثلا من بخواهم یکی مثل این برای خودم بسازم(حالا ساده ترین چیز هم مشکلی نیست فقط میخواهم بفهمم چی هست این grid و امثال اون.
چون مطمئنم تابع نیست .
 

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
دوستان grid تابع نیست. تو متلب چی هستند این نوع متغیر ها؟
مثلا من بخواهم یکی مثل این برای خودم بسازم(حالا ساده ترین چیز هم مشکلی نیست فقط میخواهم بفهمم چی هست این grid و امثال اون.
چون مطمئنم تابع نیست .

اتفاقاً یک تابع هستش. تابعش هم یک mفایل هست که حداکثر دو تا ورودی می گیره و خروجی عددی نداره. اگه این تابع رو باز کنی، می بینی که در حقیقت از یک سری دستورهای سطح پایین متلب استفاده کرده، و یک تابع سطح بالا درست کرده. با این کار این امکان رو برای کسانی که دستورهای سطح پایین رو بلد نیستند فراهم کرده که به طور غیرمستقیم از این امکانات استفاده کنند.
 

irpersian20

عضو جدید
اتفاقاً یک تابع هستش. تابعش هم یک mفایل هست که حداکثر دو تا ورودی می گیره و خروجی عددی نداره. اگه این تابع رو باز کنی، می بینی که در حقیقت از یک سری دستورهای سطح پایین متلب استفاده کرده، و یک تابع سطح بالا درست کرده. با این کار این امکان رو برای کسانی که دستورهای سطح پایین رو بلد نیستند فراهم کرده که به طور غیرمستقیم از این امکانات استفاده کنند.

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

meytim

متخصص محاسبات عددی و MATLAB
کاربر ممتاز
ممنون
چطور میشه توابع نوشته شده رو دید؟
open grid.m
جسارتا چون من تازه متلب امدم ، فک کردم تابع نیست. برای فهم بیشتر من میتونم خودم یک تابع مثل این بنویسم؟ مثلا 2 تا عدد بگیره وبده بیرون. فقط میخواهم نحوه ایجاد و کار این توابع رو ببنیم
اسم این توابع چی هست؟
شما باید مبحث "تابعهای کاربرساخته" یا "User-defined functions" رو از هر مرجعی که دارید مطالعه کنید.

در پایین سؤالها با رنگ آبی جواب داده ام.
 

HADID14

عضو جدید
سلام کسی می تومه بگه مشکل این چیزی که نوشتم چیه؟؟Capture.jpg
 

پیوست ها

  • Capture.jpg
    Capture.jpg
    11.3 کیلوبایت · بازدیدها: 0

Hadie89

عضو جدید
سلام
کسی برنامه حل دستگاه معادلات غیر خطی در متلب رو داره؟
 

Hadie89

عضو جدید
سلام من یه حلقه حدس و خطایی نوشتم به این صورته که اول یه عدد رینولدز حدس میزنم محاسبات رو انجام میدم تا جایی که اختلاف مقدار جدید و قدیم رینولدز کم باشه اما برنامم ایراد داره میشه کمکم کنید:
کد:
while abs((Rep(i)-l(i))/Rep(i))>10^-6
     
   w(i)=log(Rep(i));
      if Rep(i)>0.1 && Rep(i)<=7
Cd(i)=(24*omega*(1+0.1315*(Rep(i))^(0.82-0.05*w)))/Rep(i);
else if Rep(i)>7 &&  Rep(i)<120
Cd(i)=(24*omega*(1+0.0853*(Rep(i))^(1.093-0.105*w(i))))/Rep(i);
    end
      end
      Remf(i)=(Ar/0.75*alpha*Cd(i))^0.5;
 umf(i)=(Remf(i)*mug)/dp*rog;
 ut(i)=((4*dp*(ros-rog)*g)/3*rog*Cd(i));
 l(i)=(rog*ut(i)*dp)/mug;  
i=i+1;
 end

error:Index exceeds matrix dimensions.
 
سلام من یه حلقه حدس و خطایی نوشتم به این صورته که اول یه عدد رینولدز حدس میزنم محاسبات رو انجام میدم تا جایی که اختلاف مقدار جدید و قدیم رینولدز کم باشه اما برنامم ایراد داره میشه کمکم کنید:
کد:
while abs((Rep(i)-l(i))/Rep(i))>10^-6
     
   w(i)=log(Rep(i));
      if Rep(i)>0.1 && Rep(i)<=7
Cd(i)=(24*omega*(1+0.1315*(Rep(i))^(0.82-0.05*w)))/Rep(i);
else if Rep(i)>7 &&  Rep(i)<120
Cd(i)=(24*omega*(1+0.0853*(Rep(i))^(1.093-0.105*w(i))))/Rep(i);
    end
      end
      Remf(i)=(Ar/0.75*alpha*Cd(i))^0.5;
 umf(i)=(Remf(i)*mug)/dp*rog;
 ut(i)=((4*dp*(ros-rog)*g)/3*rog*Cd(i));
 l(i)=(rog*ut(i)*dp)/mug;  
i=i+1;
 end

error:Index exceeds matrix dimensions.

مقدار اولیه و اینا رو که دادین؟شرط اولیه وایل و اینا؟
 

mitra*

کاربر بیش فعال
کاربر ممتاز
سلام به همگی، بچه ها کسی میتونه کمکم کنه؟!
من یه مسئله LMI دارم ولی بلد نیستم توی متلب حل کنم .یعنی کلا LMI بلد نیستم اخه واحدشو پاس نکردم :(
بچه ها میشه لطفا کمکم کنین بگین چطوری میتونم حلش کنم؟

LMI.jpg
 
آخرین ویرایش:

irpersian20

عضو جدید
با درئد
دوستان من میخواهم این فرمول رو بنویسم. اما وقتی در متلب میزنم با جواب ی که با دست حساب میکنم کاملا فرق دار
input = imread('cameraman.tif');
[m , n] = size(input);
output = zeros(m,n);
L = 256;
Xmax = L - 1 ;
% Xc = 10.75;
Fe = 2;
Fd = 30;
Pmn = zeros(m,n);
Pmn = double(Pmn);
for i = 1:m
for j = 1:n
Xmn = double(input(i,j));
Pmn(i,j)=1./((1+((Xmax-Xmn)./Fd)).^Fe);
end
end
 

پیوست ها

  • adedfsef.JPG
    adedfsef.JPG
    14.3 کیلوبایت · بازدیدها: 0

Similar threads

بالا