اشکالی نداره با همون global درست میشه
مرسی حل شد :)
توی متلب یه سری فرمت ها هست که برای نشان دادن چند رقم اعشار هست.
مثلن 2 رقم اعشار ، 4 رقم اعشار یا 15 رقم اعشار . ولی من میخوام 6 رقم اعشار نشون بده. چطوریه؟
با digits خواستم انجام بدم نشد. شما میدونید چطوریه؟
یعنی این جوری؟
sprintf('%f x 10e-6',12.34567658/10e-6)
من به این صورت زیر نوشتم و جوابی که گرفتم اینطوری بود :
sprintf('%10e\n',v')
جواب :
6.140758e+005
2.023135e+006
3.572194e+006
2.637223e+006
4.186298e+006
5.595317e+006
6.209423e+006
ـــــــــــــــــــــــــ ـــــــــــــــــــــــــ ــــــــــــــــــــ
sprintf('%f x 10e-6\n',v')
جواب :
614075.750000 x 10e-6
2023134.500000 x 10e-6
3572194.000000 x 10e-6
2637222.808247 x 10e-6
4186297.933594 x 10e-6
5595317.432922 x 10e-6
6209423.423902 x 10e-6
بی خیال. فعلن منصرف شدم. جور دیگه میخواستم.
دستت درد نکنه مهندس
سلام
ببخشید چندتا سوال داشتم
شما توی کدهای nira بغیر از river-fj, river-cj, river-j چیز دیگه ای رو هم کم و زیاد کردین؟
مثلن توی interfac یا relax و ... !
numplayers رو که میدونم تغییر دادین توی interfac
* توی interfac چرای این کد رو اضافه کردین؟ دلیلتون چی بود؟ درسته که میخواستیم payoff رو بدست بیاریم ولی اگه میخواست توی این قسمت بدست بیاد که ادامه برنامه واسه چی بود؟ (البته جوابها رو مشکلی ندارم. درست در اومدن!)
payoff(numplayers)=c(1,1);
آخرین ویرایش به وسیله coronaa : یک شنبه 27 مهر 1393 در 20:38 عصر
والا این کد را من نذاشتم داخل interfac فکر کنم خودتون گذاشتید
من فقط گفتم شما به طور دستی numplayer را از 1 تا 10 تغییر بدید و هر دفعه که اجرا کردید نتیجه را در نوت پد کپی کنید تا 10 تا نتیجه داشته باشیم
نه منم نذاشتم. با کد اصلیش مقایسه کردم دیدم این اضافه شد. احتمالن خودتون گذاشتید!
فایل زیپ که برای شما فرستادم محتواش را نگاه کردم . داخل interfac چنین چیزی نبود!
خب منم همینو میگم دیگه!
حالا کی اون خط رو اضافه کرد خدا میدونه :))
من یه celldata درست کردم که ابعادش 1 در 4 هست و در هر سلول، یک ماتریس 1 در 10 وجود داره.
به این صورت :
celldata =
[1x10 double] [1x10 double] [1x10 double] [1x10 double]
حالا چطوری میتونم ماتریس های موجود در هر سلول رو پشت سر هم بصورت سطری بنویسم؟
یعنی یه ماتریس 4 در 10 داشته باشم!
آخرین ویرایش به وسیله coronaa : جمعه 02 آبان 1393 در 18:30 عصر
مهندس با دستور nchoosek نمیشه حالت های مختلف Merge & Split رو نوشت؟
مثل تصویر زیر :
http://www.uplooder.net/img/image/88...collection.jpg
من 46 حالت رو نوشتم. نمیدونم چند حالت بوجود میاد!
ببخشید من امروز زیاد سوال دارم :)
این یه قسمت برنامه هست که به ازای numk مختلف ، که تشکیل celldata میدن، میاد نمودار رو رسم میکنه :
numk =[0.2000 0.4000 0.6000 0.8000];
for i=1:length(numk)
mat=celldata{1,i};
plot((2:10),mat(2:10),'r')
ylabel('Symmetric NE Efficiency');
xlabel('Number of Suppliers in Microgrid');
legend('simulated efficiency')
axis([2 10 0 1.1])
hold on
end
حالا نمیدونم چطوری توی نمودار مشخص کنم که هر نمودار به ازای کدوم numk هست! میشه نشون داد؟
ببین اون سلولی که ساخته شد، 4 تا سلول داخلی داره که هر سلول داخلی یه ماتریس 1 در 10 هست. یعنی من کل این سلول، 4 تا متریس 1 در 10 دارم.
حالا میخوام این بردارهای 1 در 10 رو توی یک ماتریس قرار بدم. بصورت زیر :
[1x10 double]
[1x10 double]
[1x10 double]
[1x10 double]
که بشه یک ماتریس 4 در 10
legend را چند بار نباید اجرا کنید تنها یکبار کافیه ( پس از اجرای حلقه) توی هلپ ببینید
سلول:
c = {}
for i = 1:4
c{i} = rand(1, 10);
end
m = zeros(4, 10);
for i = 1:4
m(i, :) = c{i};
end
دستت درد نکنه. سلول درست شد!
ولی legend هنوز درست نشد. توی legend چی باید قرار بدم؟ من که نمیدونم چه تعداد نمودار رسم میشه که بخوام برای تک تکش نامگذاری کنم!
for i=1:length(numk)
mat=celldata{1,i};
plot((2:10),mat(2:10),'r')
ylabel('Symmetric NE Efficiency');
xlabel('Number of Suppliers in Microgrid');
axis([2 10 0 1.1])
hold on
end
legend('simulated efficiency')
grid
واضحه! تعدادش برابر با length(numk) هست
این مثال هلپ متلب یه کم تغییر دادم
خیلی واضحه نمیدونم کجا مشکل دارید
x = -pi:pi/20:pi;
y1 = sin(x);
y2 = cos(x);
figure
plot(x,y1,'-ro',x,y2,'-.b')
strings= {'sin(x)', 'cos(x)'};
legend(strings)
تفاوت من و شما اینه که شما از قبل میدونستید دوتا نمودار دارید و برای هر کدوم مشخص کردین ro باشه یا b- باشه. ولی من توی string نمیدونم چندتا جمله باید داشته باشم.با حلقه for میشه مشخص کرد؟
منم همچین نموداری رو رسم کردم و چون میدونستم چندتا نمودار هست برای هر کدوم نامگذاری کردم :
fig4.png
آخرین ویرایش به وسیله coronaa : دوشنبه 05 آبان 1393 در 20:22 عصر
a=rand(5,10);
symb = {'-r',':b','-.g','--c','-om'};
strings = {'a','b','c','d','e'}
figure,hold on;
for i =1:5
plot( a(i,:),symb{i});
end
legend(strings)
خب فرقی نکرد!
شما از قبل میدونستی که میخوای 5 تا نمودار رسم کنی.
symb = {'-r',':b','-.g','--c','-om'};
strings = {'a','b','c','d','e'}
حالا شما یه مثال ساده بزنید که نشه با این روش ترسیم کرد
n=input('tedade nemoodarha ra vared konid')
a=rand(n,10);
symb = {'-r',':b','-.g','--c','-om'};
strings = {'a','b','c','d','e'}
figure,hold on;
for i =1:n
plot( a(i,:),symb{i});
end
legend(strings)
حالا چی؟
دو جمله پایینی باید با تغییر n تغییر کنه!
symb = {'-r',':b','-.g','--c','-om'};
strings = {'a','b','c','d','e'}
حالا من نمیخوام حتمن نمودارها رنگی بشه. همه یه رنگ باشه ولی از k1 تا kn شماره گذاری باشه.
بالاخره در پلات می خواهی نامهای معتبر به هر خط بدی
n=10;
a=rand(n,20);
rang={'b','g','r','c','m','y' ,'k'};
symb={'.' ,'o' ,'x' ,'+' ,'*' ,'s' ,'d' ,'v' ,'^' ,'<' ,'>' };
szrg = numel(rang);
szsy =numel(symb);
figure,hold on
for i =1:n
plot(a(i,:), sprintf('-%c%c', rang{mod(i, szrg) + 1}, symb{mod(i, szsy) + 1}))
end
legend(int2str((1:n)'))
n=10;
a=rand(n,20);
plot(1:20,a)
legend(int2str((1:n)'))
طیب الله :)
چیزی که میخواستم همین بود. حالا باید با برنامه ی خودم تطبیقش بدم.
دستت درد نکنه مهندس.
سلام
من یه چند جمله ای دارم بصورت زیر :
2x^4 + 3x^2 + 1.5x +5
چطوری میتونم بگم ضریب x^4 و x با هم جمع بشه؟
چند جمله ای شما به این صورت نوشته میشه
mypol =[2 0 3 1.5 5];
برای چاپ اون اینجور میشه
polyout(mypol)
جمع ضرایب:
mypol(1) + mypol(3)
درسته ولی اگه کاربر نتونه به چندجمله ای دسترسی داشته باشه و در حین یه عملیاتی توی برنامه ساخته بشه اونوقت چی؟منظورم اینه که mypol خودش باید ساخته بشه؟
سوالتون واضح نیست. لطفا یک مثال عملی بزنید