فایل زیپ که برای شما فرستادم محتواش را نگاه کردم . داخل interfac چنین چیزی نبود!
Printable View
فایل زیپ که برای شما فرستادم محتواش را نگاه کردم . داخل interfac چنین چیزی نبود!
خب منم همینو میگم دیگه!
حالا کی اون خط رو اضافه کرد خدا میدونه :))
من یه celldata درست کردم که ابعادش 1 در 4 هست و در هر سلول، یک ماتریس 1 در 10 وجود داره.
به این صورت :
celldata =
[1x10 double] [1x10 double] [1x10 double] [1x10 double]
حالا چطوری میتونم ماتریس های موجود در هر سلول رو پشت سر هم بصورت سطری بنویسم؟
یعنی یه ماتریس 4 در 10 داشته باشم!
مهندس با دستور 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 میشه مشخص کرد؟
منم همچین نموداری رو رسم کردم و چون میدونستم چندتا نمودار هست برای هر کدوم نامگذاری کردم :
ضمیمه 125025
گفتم که تعدادش مشخصه
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 خودش باید ساخته بشه؟
سوالتون واضح نیست. لطفا یک مثال عملی بزنید
مرسی. اون چیزی که تو ذهنم بود اشتباه بود. توی متلب همون ضرایب چند جمله ای تولید میشه. در حالی که من فکر میکردم خود چند جمله ای رو مینویسه.
تشکر. حل شد.
سلام آقای مهندس :)
من یه کد دارم که در هر حلقه for میاد یه مقدار رو توی خروجی نشون میده. مثلن 10 بار این حلقه باید اجرا بشه. من چطوری میتونم در پایان برنامه، تمام مقادیر رو در یک سلول 1 در 10 ذخیره کنم؟
سلام
این جور میشه
mycelll = {};
for i = 1:10
mycell{i} = i*i;
end
مرسی. قبلنم اینو گفته بودین. هر کاری میکردم نمیشد. الآن درست شد.
حالا اگه بخوام کل این مجموعه، 5 بار تکرار بشه و هر بار که اجرا میشه در یک سطر قرار بگیره و حلقه بعدی در سطر زیرین قرار بگیره چطوریه؟
به این صورت :
من اینطوری نوشتم ولی ظاهرن اشتباهه!
celltotal = {};
for j = 1:5
mycell = {};
for i = 1:10
mycell{i} = i*i;
end
celltotal{j} = mycell{j};
end
m = zeros(5, 10);
for ii = 1:5
m(ii, :) = celltotal{ii};
end
این جور میشه نوشت
mycell ={};
for i = 1:5
for j= 1:10
mycell{i,j} = i*j;
end
end
این کد بالایی که نوشتم اشتباهه؟ جوابش به این صورته :
m =
1 1 1 1 1 1 1 1 1 1
4 4 4 4 4 4 4 4 4 4
9 9 9 9 9 9 9 9 9 9
16 16 16 16 16 16 16 16 16 16
25 25 25 25 25 25 25 25 25 25
فکر کنم اینجور باید بنویسید
celltotal = {};
for j = 1:5
mycell = {};
for i = 1:10
mycell{i} = i*i;
end
celltotal{j} = mycell;
end
m = zeros(5, 10);
for ii = 1:5
m(ii, :) = cell2mat(celltotal{ii});
end
اگه قرار بود توی آرایه بریزید خب از همون اول این کار را می کردید
m = zeros(5, 10);
for i=1:5
for j=1:10
m(i,j) = i*j;
end
end
ممنون..مشکل منم تقریبا همین بود حل شد
ییییییییییییییییییییییییی ییییییییییییییییییییییییی ییییییییییییییییییییییییی ییی
سلام
چطوری میتونم یه بردار ستونی بسازم که ستون اول از 1 تا 10 باشه و ستون دوم فقط یک عدد ثابت؟
clc; clear all;
p=input('Enter x :');
x=zeros(10,2);
for t=1:10
x(t,1)=p;
% x(t,:)= x(t,p)
end
x
x = [(1:10)', repmat(6,10,1)]
یا
x = zeros(10, 2);
x(:, 1) = 1:10;
x(:, 2) = 6;
اگه بخوام این بردار که از نوع double هست به نوع struct تبدیلش کنم میشه؟
لطفا دقیقا بگید چیکار میخواهید بکنید
مرسی از کمکتون.
مشکلم که بر طرف شد ولی میخواستم بدونم میشه یه داده عددی که بصورت double هست رو به فرمت struct تبدیلش کرد. احتمال داده بودم که داده هایی که تو سیمولینک کار میکنن فرمت struct رو قبول می کنند.
حالا اگه منظورم رو متوجه نشدین، دیگه بیخیال شید. شاید سوال پوچی پرسیدم!
سلام
میشه فهمید تابع نمودار زیر چیه؟
یا اصلن میشه نمودار اینچنینی رو توی متلب تخمین زد؟
http://www.uplooder.net/img/image/74...ba9f37/zzz.bmp
سلام
باید ابتدا نقاط نمودار x و y را به یک طریقی استخراج کنید
تابع احتمالا یک تابع نمایی هست که با روش زیر میتونید فرمول اون را بدست بیارید
با استفاده از polyfit هم میشه یک چند جمله ای را به نمودار فیت کرد
data = [
0 126.6;
1 101.8;
2 71.6;
3 85.1;
4 101.6;
5 67.5;
6 68.1;
7 55.2;
8 62.9;
9 45.5;
10 41.9;
11 46.3;
12 34.1;
13 38.2;
14 41.7;
15 24.7;
16 41.5;
17 24.5;
18 36.6;
19 19.6;
20 22.8;
21 29.6;
22 23.5;
23 15.9;
24 15.3;
25 13.4;
26 26.8;
27 9.8;
28 18.8;
29 25.9;
30 19.3
];
x= [ones(size(data, 1), 1), data(:, 1)];
y = log (data(:, 2));
zaraeb = pinv (x) * y;
plot(data (:, 1), data (:, 2), 'o')
hold on;
plot(data (:, 1), exp (zaraeb' * x'))
این داده ها رو بصورت فرضی در نظر گرفتین؟
دستور pinv چه کاری انجام میده؟
راستش هدف من برازش منحنی نبود. من هدفم اینه که این نمودار رو توی متلب رسم کنم. حالا صرفنظر اینکه بدونم چه تابعی هست.
الآن با این برازشی هم که انجام دادین زیاد دقیق به اون تابع نیست!