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


رتبه موضوع:
  • 1 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
خطای double (متلب - MATLAB)

خطای double (متلب - MATLAB)

#1
Question 
سلام بر دوستان عزیز
من توی این انجمن جدیدم ولی یک سوال مهم دارم
دارم یه برنامه متلب مینویسم ک از function استفاده کردم مرتب این error رو میده
 Undefined function or method 'T' for input arguments of type 'double'.
نمیدونم واسه چی؟
لطفا کمک کنیید
ممنوونم
پاسخ

خطای double (متلب - MATLAB)

#2
سلام.
اگر کدهای متلب رو اینجا قرار بدید می تونم بهتر کمکتون کنم، اما یک حدس هایی می تونم بزنم، ببینید از این موارد هست یا نه :
امکان داره سعی کرده باشید خود m-file تابع (function) رو اجرا کنید. m-file مربوط به توابع رو نمیشه به طور مستقیم اجرا کرد بلکه باید تابع در یک برنامه دیگر، فراخوانی شود.
امکان داره که T (که در پیام خطا اعلام شده که تعریف نشده است) رو قبلا تعریف نکرده باشید.
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

خطای double (متلب - MATLAB)

#3
نه این function رو توی یه برنامه اصلی استفاده کردم![font][font][font]function[/font][/font][/font]  [font][font]F(T1j)=T(T(1j+1),T(1j),T(1j-1),r,h,k,tinfinity,g,dx)[/font][/font][font][font]F=(k*(pi*(r^2))*((T(1j-1)-T(1j)/dx))+k(pi*(r^2))*((T(1j+1)-T(1j))/dx)+(h*(2*pi*r*dx)*(Tinfinity-T(1j)))+(g*(pi*(r^2)*dx))==0)
این کد function که نوشتم
نمیدونم این خطای double مربوط به کدوم متغیره؟؟؟؟؟؟؟؟؟
ممنوونم[/font][/font]
پاسخ

خطای double (متلب - MATLAB)

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

خطای double (متلب - MATLAB)

#5
function

F(T1j)=T(T(1j+1),T(1j),T(1j-1),r,h,k,tinfinity,g,dx)

F=(k*(pi*(r^2))*((T(1j-1)-T(1j)/dx))+k(pi*(r^2))*((T(1j+1)-T(1j))/dx)+(h*(2*pi*r*dx)*(Tinfinity-T(1j)))+(g*(pi*(r^2)*dx))==0)
فکر کنم درست شد....!!
 
پاسخ

خطای double (متلب - MATLAB)

#6
function

F(T1j)=T(T(1j+1),T(1j),T(1j-1),r,h,k,tinfinity,g,dx)

F=(k*(pi*(r^2))*((T(1j-1)-T(1j)/dx))+k(pi*(r^2))*((T(1j+1)-T(1j))/dx)+(h*(2*pi*r*dx)*(Tinfinity-T(1j)))+(g*(pi*(r^2)*dx))==0)
فکر کنم درست شد...!!!
پاسخ

خطای double (متلب - MATLAB)

#7
با توجه به کدها، ساختار تابع نوشته شده درست نیست.
یک تابع باید دارای شکل کلی زیر باشه (به عنوان مثال) :

کد:
function [z] = add(x,y)
z=x+y;

که در آن، x و y دو ورودی تابع و z خروجی تابع می باشد.
توصیه می کنم نگاهی به مبحث زیر بیندازید :

http://www.kelidestan.com/matlab/matlab-15.php
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ

خطای double (متلب - MATLAB)

#8
خب اینو ک میدووونم!
ولی ب این function و این متغیرها نیاز دارم
اگر توی خط پایین هم F(T1j) بذارم درست مییشه؟!؟
آخه توی برنامه اصلی هر Tj ای ب Tj-1 یا Tj+1 ربط دااارهه
کجای تابع من مشکل داره الان؟
پاسخ

خطای double (متلب - MATLAB)

#9
به نظر میاد کدهاتون مشکلات زیادی داره.
اولیش رو گفتم که اصلا ساختار تعریف تابع رو رعایت نکردید. ورودی و خروجی معلوم نیست. نام تابع معلوم نیست.
دوم اینکه شما m-file حاوی این کدها رو با چه نامی ذخیره کرده اید ؟ چون مثلا در مثال قبلی که گفتم، m-file باید با نام add ذخیره بشه. 
در ضمن بگید که چطور تابع رو فراخوانی می کنید.
توصیه می کنم ابتدا یک تابع ساده بسازید و تستش کنید بعد به سراغ تابع خودتون برید.
مثلا در ساختار شما، علامت های ] و [ به کار نرفته، در همون مثال ساده ای که در ارسال قبلی گفتم اگر این دو علامت به پرانتز تبدیل بشن، پیام خطا نشون داده میشه.

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

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

خطای double (متلب - MATLAB)

#10
الآن متوجه شدم دقیق و تا آنجاایی که تونستم تغییرات رو اعمال کردم!
فراخوانی رو هم اسم function یعنی خط اول دستور function رو مینویسم توی m file اصلی!
اگه بخواید m fileو میتونم بفرستم
بازم بسیار سپاس
 
پاسخ

خطای double (متلب - MATLAB)

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

خطای double (متلب - MATLAB)

#12
سلام
خطای double رفع شده ولی الآن خطای unbalanced paranthesisهستSad
function [F]=temp(T(1j+1),T(1j),T(1j-1),r,h,k,tinfinity,g,dx)

F=(k*(pi*(r^2))*((T(1j-1)-T(1j)/dx))+k*(pi*(r^2))*((T(1j+1)-T(1j))/dx)+(h*(2*pi*r*dx)*(Tinfinity-T(1j)))+(g*(pi*(r^2)*dx))==0)
پاسخ

خطای double (متلب - MATLAB)

#13
مشکل از خط اول کدها است :

کد:
function [F]=temp(T(1j+1),T(1j),T(1j-1),r,h,k,tinfinity,g,dx)

مثلا شما ورودی اول رو به شکل زیر تعریف کردید :

کد:
T(1j+1)

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

کد:
T_1j_positive_1

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

خطای double (متلب - MATLAB)

#14
متوجه شدم ولی دو تا سوال پیش میاد یکی اینکه این نوع نماد نویسی متغیرها رو توی خط دوم functionهم ادامه بدم یا لازم نیست !؟؟!
دوم اینکه نحوه ی فراخوانی تابع رو هم میتونید واسم توضیح  بدییید؟
بازم متشکرم بسیااااار
پاسخ

خطای double (متلب - MATLAB)

#15
وقتی توی اولین خط تابع، یک نماد برای ورودی ها تعیین کردید، در خطوط بعدی از کدهای تابع، باید از همون نمادها استفاده کنید. اگر نام نمادها خیلی بود، می توانید مقادیر آنها را در متغیرهایی با نام های دیگر ذخیره کرده و سپس کدها را برای این متغیرهای جدید بنویسید، البته به نظر من نیازی نیست.
برای فراخوانی (ارجاع به تابع)، ابتدا بخش ورودی از خط اول کدهای تابع رو کپی کنید (منظورم کپی در برنامه اصلی است که در آن به تابع ارجاع می دهید)، یعنی به صورت زیر :

کد:
temp(T_1j_positive_1,T_1j,T_1j_negative1,r,h,k,tinfinity,g,dx)


حالا به جای نمادهایی که در پرانتز نمایش داده شده اند، مقادیر دلخواه خود را وارد کنید (اگر نام یک متغیر را بگذارید، باید آن متغیر قبلا تعریف شده باشد). مثلا :

کد:
T_1j_positive_1=1;
T_1j=2;
T_1j_negative1=6;
tinfinity=4;
dx=90;

temp(T_1j_positive_1,T_1j,T_1j_negative1,8,19,13,tinfinity,23,dx)

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

خطای double (متلب - MATLAB)

#16
کلام شما کاملا متین!
 ولی من تمام این متغیرها رو از کاربر میگیرم پس نمی تونم خودم عددی بهشون نسبت بدم....
در ضمن مثلا متغیر T1j+1 تعریف شده مثلا اگه t1j دمای نقطه یک باشد دمای نقطه دو خواهد بدون هیچ وابستگی ب نقطه یک!!!
اینو چجوری میتونم تعریف کنم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
پاسخ

خطای double (متلب - MATLAB)

#17
کد:
clear all
clc
disp('Temperature distribution in a cylindrical pyramid using Function')
L=input('lenghth of fin: ')
g=input('rate of heat generation: ')
r=input('fins radius: ')
k=input('thermal conductivity: ')
Tb=input('base temperature: ' )
T1j=input('initial temperature: ')
tinfinity=input('environments temperature: ')
h=input('convection coefficient: ')
n=input('number of the nodes: ')
dx=L./(n-1);
for j=1:n-1
temp(T_1j_possitive_1,T_1j,T_1j_negative_1,r,h,k,tinfinity,g,dx)
j=j+1
end
if j==n
tempe(r,T_n_negative_1,T_n,h,tinfinity,g,k,dx)
end
S=solve('[F]','[P]')
S=S(T1 : Tn)


 
پاسخ

خطای double (متلب - MATLAB)

#18
(۱۳۹۲/۰۳/۱۵, ۱۱:۲۹ ب.ظ)'arezo0o' نوشته: ولی من تمام این متغیرها رو از کاربر میگیرم پس نمی تونم خودم عددی بهشون نسبت بدم....
 

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

(۱۳۹۲/۰۳/۱۵, ۱۱:۲۹ ب.ظ)'arezo0o' نوشته: در ضمن مثلا متغیر T1j+1 تعریف شده مثلا اگه t1j دمای نقطه یک باشد دمای نقطه دو خواهد بدون هیچ وابستگی ب نقطه یک!!!
اینو چجوری میتونم تعریف کنم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
 

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

خطای double (متلب - MATLAB)

#19
خب بعضی وقتا مثلا میشه T1j+1=T1j+dT بشه ولی اینجا اینجوری نمیشه نوشتش درکل هیچ رابطه ی ریاضی مشخصی نداره Sadچون خودش دمای یک نقطه ی جداگانه ست !!!
توی m file بالا نگاه  کنید متوجه میشید منظورمو!و حالا متلب ارور میده ک
 Undefined function or variable 'T_1j_possitive_1'.
Error in ==> hararat at 15
    temp(T_1j_possitive_1,T_1j,T_1j_negative_1,r,h,k,tinfinity,g,dx)
........
چ کنم؟؟؟؟؟؟؟؟؟؟؟؟؟
پاسخ

خطای double (متلب - MATLAB)

#20
شما باید قبل از فراخوانی تابع، برای T_1j_possitive_1 مقدار تعریف کنید. تابع باید این ورودی رو بگیره، وقتی شما براش مقدار تعریف نکردید، پیام خطا میده.

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

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

خطای double (متلب - MATLAB)

#21
(۱۳۹۲/۰۳/۱۵, ۱۰:۰۴ ق.ظ)admin نوشته: سلام.
اگر کدهای متلب رو اینجا قرار بدید می تونم بهتر کمکتون کنم، اما یک حدس هایی می تونم بزنم، ببینید از این موارد هست یا نه :
امکان داره سعی کرده باشید خود m-file تابع (function) رو اجرا کنید. m-file مربوط به توابع رو نمیشه به طور مستقیم اجرا کرد بلکه باید تابع در یک برنامه دیگر، فراخوانی شود.
امکان داره که T (که در پیام خطا اعلام شده که تعریف نشده است) رو قبلا تعریف نکرده باشید.

سلام
من هم با این ارور مواجه شدم
Undefined function 'sar' for input arguments of type 'double'.
قبلا این ارور ظاهر نمی شد
قبلا این برنامه رو اجرا کردم اما نمی دونم چرا این دفعه ارور داد

ممنون
پاسخ

خطای double (متلب - MATLAB)

#22
(۱۳۹۵/۰۶/۰۴, ۰۳:۲۹ ب.ظ)ayhan_vahid نوشته:
(۱۳۹۲/۰۳/۱۵, ۱۰:۰۴ ق.ظ)admin نوشته: سلام.
اگر کدهای متلب رو اینجا قرار بدید می تونم بهتر کمکتون کنم، اما یک حدس هایی می تونم بزنم، ببینید از این موارد هست یا نه :
امکان داره سعی کرده باشید خود m-file تابع (function) رو اجرا کنید. m-file مربوط به توابع رو نمیشه به طور مستقیم اجرا کرد بلکه باید تابع در یک برنامه دیگر، فراخوانی شود.
امکان داره که T (که در پیام خطا اعلام شده که تعریف نشده است) رو قبلا تعریف نکرده باشید.

سلام
من هم با این ارور مواجه شدم
Undefined function 'sar' for input arguments of type 'double'.
قبلا این ارور ظاهر نمی شد
قبلا این برنامه رو اجرا کردم اما نمی دونم چرا این دفعه ارور داد

ممنون

سلام.
اگر sar تابع داخلی متلب بوده (جزء توابع از پیش تعریف شده) که باید ببینید چرا فایل sar.m را پیدا نمی کند (مثلا فایل تابع را از اینترنت یا شخص دیگری دریافت کرده و در مسیرهای تعریف شده برای متلب کپی کنید)، اما اگر تابعی است که خودتان آن را تعریف کرده اید، باید مسیر حاوی فایل sar.m را به مسیرهای (paths) تعریف شده برای متلب اضافه نمایید :

کلید شماره 177

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


پرش به انجمن:


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