وقتی delat T داره دیگه زمان دخیل نیست؟
Printable View
شاید لازم باشه اون جمع ضربدر واحد اپسیلون زمان بشه که این هم تنها یک ضریبه که نهایتا در فرمول بهینه سازی تاثیری نداره
میدونیم که با دستور rand میشه یه نویز تصادفی ساخت. به نظرت میشه بگیم به مدت مثلاً 4 ثانیه داده تصادفی ایجاد کن؟
بسته به این داره که در هر ثانیه چند تا نمونه گرفته باشیم اگه در هر ثانیه صد تا نمونه بگیریم میشه 400 عدد رندوم
اصلا rand نمیدونه ثانیه چیه. این ما هستیم که مشخص می کنیم که چند تا تولید بشه بله همین دستور درسته
این توزیع نرماله قبلی توزیع یکنواخت بود
بستگی به سیستم شما داره. انواع و اقسام نویز داریم
سلام
از نویسنده مقاله در مورد وزنها پرسیدم. گفت هرکدوم رو 0.5 بگیر.
کد بصورت زیر شد ولی مقدار نهایی بین صفر و یک نمیشه. چرا؟
w1=0.5;
w2=0.5;
out1=rand(1,100);
out2=rand(1,100);
e1=.1*out1;
e2=.1*out2;
f1 = sum(abs(e1))+sum(abs(e2))
f2 = sum(abs(diff(out1))) + sum(abs(diff(out2)))
F = w1*f1+w2*f2
طبق مقاله ای که براتون فرستاده بودم، همه ی مقادیر IAE بین صفر و یک هست.
باید چند دور مقاله را مطالعه کرد تا مشخص بشه چی به چیه
حالا مثلا هر جا خیلی سخت باشه و درکش هم خیلی مشکل باشه من خودم میام پیش نیازهای اون را مطالعه می کنم تا بتونم مطلب را درک کنم
ممنونم.
توی این مقاله که زیاد توضیح نداد.
خودمم جداگانه سرچ کردم هم اون چیزی که میخواستم نبود.
حالا منم بیشتر مطالعه میکنم تا ببینم چطوریه؟
با سلام مجدد خدمت دوست عزیزمون :)
این رابطه رو چطوری میشه پیاده سازی کرد؟
باید از sum استفاده کنیم یا حلقه for ؟؟؟
بحث تعصب داشتن روی یک نرم افزار خاص نیست. بلکه من باید چند موضوع رو با هم ادغام کنم که شاید فط maxima یا octave نتونه اون کار رو انجام بده.
من ابتدا باید با فازی یه سری پارامترها رو بدست بیارم که مسلماً توی متلب باید باشه. بعد باید روابط مرتبه کسری رو پیاده سازی کنم (همین فرمول و چندتا دیگه) و سپس باید با متلب کنترلرم رو طراحی کنم. پس نمیشه که من با maxima انجام بدم و چون این کدها باید به هم پیوسته باشن نمیشه فقط نتایج رو از این بگیرم و ببرم توی متلب.
در ضمن، من اینجا فقط شما رو قبول دارم :)
پیشاپیش سال نو شما هم مبارک :لبخندساده:
حالا شاید بشه بعضی قسمتها را از جای دیگه گرفت که در هر صورت بستگی به کار شما داره داره
:) این نظر لطفتونه. متاسفانه این تالار خیلی سوت و کوره و کمتر کسی تمایل داره بیاد فعالیت کنه مطلبی بذاره و یا به سوالی پاسخ بده به این خاطر هست که شاید پستهای یکی مثل من به چشم بیادنقل قول:
در ضمن، من اینجا فقط شما رو قبول دارم :)
سال نو شما هم مبارک. :) شما هم سال خوبی داشته باشید خدا کنه سال جدید بهتر از سال کهنه باشهنقل قول:
پیشاپیش سال نو شما هم مبارک :لبخندساده:
سلام
من دارم با الگوریتم ژنتیک کار میکنم.
یه function دارم که دو تا ورودی داره. حالا نمیدونم توی دستور ga چطوری برای هر کدوم باند بالا و پایین انتخاب کنم و یا اصلاً چطوری برای توابع چند متغیره کار میکنه!
شما آشنایی دارید؟
این تابع :
function [ p ] = sys_performance( K1 , K2 )
%UNTITLED2 Summary of this function goes here
% Detailed explanation goes here
set_param('exam/Gain1', 'Gain', num2str(K1))
set_param('exam/Gain2', 'Gain', num2str(K2))
simout=sim('exam');
p = ITAE;
end
این هم دستور ga در یک m-file دیگه :
clc
clear all
load_system('exam')
options=gaoptimset('PlotFcn', @gaplotbestf);
K_opt = ga(@sys_performance, 1 , [], [], [], [], 0.001 , 10, [], options);
سلام نه با تابع ga متلب کار نکردم الان اجرا نمیشه؟
سلام
یه سوال :
چرا عملیاتی که توی یک فانکشن صورت میگیره در workspace ذخیره نمیشه؟
من یه فانکشن دارم که در حال اجرای برنامه اصلی، ممکنه 100 بار (و یا بیشتر) تکرار بشه. میخوام نتایجی که توی فانکشن بدست میاد رو ذخیره کنم. ولی وقتی اجرای برنامه تموم میشه، هیچی ذخیر ه نمیشه!
این فانکشن :
function [ p ] = sys_performance( K )
kp1 = K(1,1);
ki1 = K(1,2);
kd1 = K(1,3);
L1 = abs(K(1,4));
M1 = abs(K(1,5));
set_param('exam2/FOPID1',...
'kp', num2str(kp1) ,'ki', num2str(ki1),'kd', num2str(kd1),...
'vi',num2str(-L1),'vd', num2str(M1))
simout=sim('exam2');
p = ITAE;
c = {};
for i = 1:100
c{i} = [kp1 , ki1 , kd1 , L1 , M1];
end
m = zeros(100,5);
for i = 1:100
m(i, :) = c{i};
end
end
و این برنامه ی اصلی :
clc
clear all
tic
% load nintblocks
load_system('exam')
options=gaoptimset('PlotFcn', @gaplotbestf, 'Display','iter');
K_opt = ga(@sys_performance, 5 , [], [], [], [],...
[0.01 , 0.01 , 0.01 , 0.01 , 0.01 ] ,...
[30 , 60 , 100 , 1.2 , 1 ], [], options);
m-file هر کدوم جداست. البته شما نمیتونید اجراش کنید. از الگوریتم ژنتیک استفاده شدهکه نمیدونم توی octave کار میکنه یا نه!
شما می تونید از یه سری متغیر global استفاده کنید که نتایج را برای شما ذخیره کنه مثلا یک تابع هست که یک بردار را می گیره و مین وماکس اون را به دست میاره و نتیجه تابع برابره با min+max
اما ما می خواهیم اون مین و ماکسی هم که در تابع به دست اومده یه جایی ذخیره داشته باشیم حالت اول با به صورت سلولی از سلولها
و روش دوم به صورت سلولی از آرایه ها می شه انجام داد
clear all;
function ret = myfunc(v)
global natayej;
global index;
mn = min(v);
mx = max(v);
natayej{index} = {mn , mx};
index = index + 1;
ret = min(v) + max(v);
end
global natayej;
global index;
natayej = {};
index = 1;
a = zeros(1,10);
for i = 1:10
a(i) = myfunc(rand(1,16));
end
clear all;
function ret = myfunc(v)
global natayej;
global index;
mn = min(v);
mx = max(v);
natayej(index) = [mn , mx];
index = index + 1;
ret = min(v) + max(v);
end
global natayej;
global index;
natayej = {};
index = 1;
a = zeros(1,10);
for i = 1:10
a(i) = myfunc(rand(1,16));
end
برا من با آرایه بهتره فکر کنم. ولی هر دو الآن خطا میده :
??? Undefined function or method 'myfunc' for input arguments of type 'double'.
Error in ==> test at 10
a(i) = myfunc(rand(1,16));
این ذخیره کردنها باید توی همون فانکشنی که مقادیری که میخوام ذخیره کنم باید انجام باشه.
و میخوام اینطوری باشه که مثلاً اگه دو تا مقدار میخواد ذخیره بشه و اون تابع 100 بار تکرار میشه همه ی اینها توی یه آرایه ی 100 در 2 ذخیره بشه. البته تعداد تکرار تابع دست من نیست!
بذارید دقیقتر توضیح بدم یک فایل به نام myfunc.m ایجاد کنید و داخلش تابع myfunc را بذارید و این تابع مثلا همون تابعی هست که در الگوریتم ژنتیک استفاده میشه که نهایتا مقادیر مین و ماکس توی natayej ذخیره میشه
نشد باز!
اشتباه میذارم؟
این تابعی که باید با ژنتیک اجرا بشه :
function [ p ] = sys_performance( K )
global natayej;
global index;
kp1 = K(1,1);
ki1 = K(1,2);
kd1 = K(1,3);
L1 = abs(K(1,4));
M1 = abs(K(1,5));
natayej(index) = [kp1 , ki1 , kd1 , L1 , M1 ];
index = index + 1;
set_param('exam2/FOPID1',...
'kp', num2str(kp1) ,'ki', num2str(ki1),'kd', num2str(kd1),...
'vi',num2str(-L1),'vd', num2str(M1))
simout=sim('exam2');
p = ITAE;
end
و این کد اصلی که من اجراش میکنم :
clc
clear all
tic
global natayej;
global index;
natayej = {};
index = 1;
load_system('exam2')
options=gaoptimset('PlotFcn', @gaplotbestf, 'Display','iter');
K_opt = ga(@sys_performance, 5 , [], [], [], [],...
[0.01 , 0.01 , 0.01 , 0.01 , 0.01 ] ,...
[30 , 60 , 100 , 1.2 , 1 ], [], options);
toc
این پیغام رو میده :
??? In an assignment A(I) = B, the number of elements in B and
I must be the same.
Error in ==> sys_performance at 15
natayej(index) = [kp1 , ki1 , kd1 , L1 , M1 ];
شما از همون cell استفاده کنید. اون را عمدا گذاشتم که اگه پارامترهایی که بخواهند در natayej قرار بگیرند و در صورتیکه هم اندازه نباشند به راحتی در cell جا بشن ولی وقتی که هم اندازه نباشند نمیتونن در یک آرایه جا بشن
مرسی. انجام شد.
ولی نفهمیدم از اینکه گفتید هم اندازه نباشن!
خب 5 تا پارامتر بدست میاد. که هر 5 تا هم یه مقدار عددی هستن. مگه تعداد رقمهاشونم مهمه؟
xxxxxxxxxxxxxxx
یه سوال پرسیده بودم که حلش کردم :)
من باید یه کدوم از این کامپایلرها رو برای متلب انتخاب کنم. آیا از نظر سرعت فرقی با هم دارن؟ کدومش در اجرا کردن سرعت بیشتری داره؟
[1] Intel C++ 13.0 (with Microsoft Software Development Kit (SDK) linker)
[2] Intel C++ 13.0 (with Microsoft Visual C++ 2010 linker)
[3] Intel C++ 13.0 (with Microsoft Visual C++ 2012 linker)
[4] Intel C++ 12.0 (with Microsoft Software Development Kit (SDK) linker)
[5] Intel C++ 12.0 (with Microsoft Visual C++ 2008 SP1 linker)
[6] Intel C++ 12.0 (with Microsoft Visual C++ 2010 linker)
[7] Intel C++ 11.1 (with Microsoft Visual C++ 2008 SP1 linker)
[8] Intel Visual Fortran 13 (with Microsoft Software Development Kit (SDK) linker)
[9] Intel Visual Fortran 13.0 (with Microsoft Visual C++ 2010 linker)
[10] Intel Visual Fortran 13.0 (with Microsoft Visual C++ 2012 linker)
[11] Intel Visual Fortran 12 (with Microsoft Software Development Kit (SDK) linker)
[12] Intel Visual Fortran 12.0 (with Microsoft Visual C++ 2008 SP1 linker)
[13] Intel Visual Fortran 12.0 (with Microsoft Visual C++ 2008 Shell linker)
[14] Intel Visual Fortran 12.0 (with Microsoft Visual C++ 2010 linker)
[15] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 SP1 linker)
[16] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 Shell linker)
[17] Microsoft Software Development Kit (SDK) 7.1
[18] Microsoft Visual C++ 2005 SP1
[19] Microsoft Visual C++ 2008 SP1
[20] Microsoft Visual C++ 2010
[21] Microsoft Visual C++ 2012
سلام
این یه سری نقاطی هست که رسم کردم.
clc; clear ; close all;
x=[-18 -16.17 -14.43 -12.6 -10.67 -9.005 -7.2 -5.461 -3.653 -1.844 0.03617 1.7 3.58 5.244 6.908 9 10.6 12.48 14.29 16.09 18;
0 -0.7306 -1.507 -2.146 -2.922 -3.516 -4.008 -4.384 -4.658 -4.886 -4.932 -4.886 -4.703 -4.475 -4.064 -3.471 -2.968 -2.237 -1.553 -0.7306 0];
plot(x(1,:),x(2,:))
حالا چطوری میتونم در بیارم که مقدار y در نقطه x برابر با 5 چنده؟ یا هر مقدار دیگه!
x مقادیر افقیه و y مقادیر عمودی.
ممنونم. یه چیز جدید یاد گرفتم :)
سلام
من 10 تا فایل اکسل دارم که اعداد بصورت سطری هستن داخلش که میخوام همه رو با یه حلقه ی for بیارم توی متلب و سپس همه در یک آرایه و زیر هم قرار بگیرن. قسمت فراخوانی کدرو اینطوری نوشتم :
for i=1:10
p=xlsread('myfile (i).xlsx')
end
ولی i جایگزین نمیشه. با d% هم نشد. چطوریه؟
سلام
این صورت بویسید
p = xlsread(sprintf('myfile(%d).xlsx', i));
p(k,:)= xlsread(sprintf('myfile (%d).xlsx', i));
سلام
در مورد کامپایلری که گفتید رونصب کردم ولی میخوام به متلب معرفی کنم نمیشناسه و میگه باید the Microsoft Windows Software
Development Kit (SDK) رو نصب کنی. یه مدل رو دانلود کردم ولی درست نشد.
مراحلش به این صورته :
>> mex -setup
Welcome to mex -setup. This utility will help you set up
a default compiler. For a list of supported compilers, see
http://www.mathworks.com/support/com...13a/win64.html
Please choose your compiler for building MEX-files:
Would you like mex to locate installed compilers [y]/n? n
Select a compiler:
[1] Intel C++ 13.0 (with Microsoft Software Development Kit (SDK) linker)
[2] Intel C++ 13.0 (with Microsoft Visual C++ 2010 linker)
[3] Intel C++ 13.0 (with Microsoft Visual C++ 2012 linker)
[4] Intel C++ 12.0 (with Microsoft Software Development Kit (SDK) linker)
[5] Intel C++ 12.0 (with Microsoft Visual C++ 2008 SP1 linker)
[6] Intel C++ 12.0 (with Microsoft Visual C++ 2010 linker)
[7] Intel C++ 11.1 (with Microsoft Visual C++ 2008 SP1 linker)
[8] Intel Visual Fortran 13 (with Microsoft Software Development Kit (SDK) linker)
[9] Intel Visual Fortran 13.0 (with Microsoft Visual C++ 2010 linker)
[10] Intel Visual Fortran 13.0 (with Microsoft Visual C++ 2012 linker)
[11] Intel Visual Fortran 12 (with Microsoft Software Development Kit (SDK) linker)
[12] Intel Visual Fortran 12.0 (with Microsoft Visual C++ 2008 SP1 linker)
[13] Intel Visual Fortran 12.0 (with Microsoft Visual C++ 2008 Shell linker)
[14] Intel Visual Fortran 12.0 (with Microsoft Visual C++ 2010 linker)
[15] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 SP1 linker)
[16] Intel Visual Fortran 11.1 (with Microsoft Visual C++ 2008 Shell linker)
[17] Microsoft Software Development Kit (SDK) 7.1
[18] Microsoft Visual C++ 2005 SP1
[19] Microsoft Visual C++ 2008 SP1
[20] Microsoft Visual C++ 2010
[21] Microsoft Visual C++ 2012
[0] None
Compiler: 21
Warning: The default location for Microsoft Visual C++ 2012 compiler is:
"C:\Program Files (x86)\Microsoft Visual Studio 11.0"
but either that directory does not exist or the configuration
is invalid.
Use C:\Program Files (x86)\Microsoft Visual Studio 11.0 anyway [y]/n? y
Please verify your choices:
Compiler: Microsoft Visual C++ 2012
Location: C:\Program Files (x86)\Microsoft Visual Studio 11.0
Are these correct [y]/n? y
************************************************** ***************************
Error: Microsoft Visual C++ 2012 requires the Microsoft Windows Software
Development Kit (SDK), but the SDK cannot be found. Examine your
Microsoft Visual C++ 2012 installation.
************************************************** ***************************
Error using mex (line 206)
Unable to complete successfully.
>>
شما میتونید لینکی از SDK بذارید تا دانلود کنم؟
یا یه راه حلی بدین.
تشکر
سلام
شاید ویژوال ++C را کامل نصب نکردید وگرنه فکر کنم sdk با اون نصب میشه
اینجا هم لینک sdk هست:
https://msdn.microsoft.com/en-us/win.../hh852363.aspx
فکر کنم نصب آنلاین هست
داخل ویژوال استادیو باید sdk باشه یه بار دیگه کامل نصب کنید
این لینکی که گذاشتم الآن توش sdk هست؟؟؟
----
جدا نمیشه پیدا کرد؟ این حجمش زیاده!
من این ++C رو نصب کرده بودم :
ضمیمه 130426
شما اصلا ویژوال سی پلاس پلاس نصب نکردید!
این نسخه رایگان برنامه به همراه sdk و بدون کرک و ویروس هست حدود 600 مگ
http://www.microsoft.com/en-us/downl....aspx?id=34673
اگه نمیشه دانلود کرد هر جا برید میتونید سی دی برنامه را گیر بیارید
نصبش کردم. فولدر sdk ساخته شد ولی داخلش خالیه!
و متلب همچنان میگه sdk وجود نداره.
ضمیمه 130433
در سایت زیر
http://blog.airesoft.co.uk/2014/05/windows-sdk-8-1-iso
شما فایل
http://www.airesoft.co.uk/files/DLIsos.zip
را دانلود کنید داخلش فایل Win8SDKFiles.txt هست که لینک تمام فایلهای sdk داخلشه
این لینکها را بدید به دانلود منیجر و همه داخل یه فولدر خاص دانلود بشن
بعد فایل sdksetup.exe را اجرا کنید تا sdk نصب بشه
اشکال نداره sdk8 برای ویندوز 7 هم کار می کنه