ورود

View Full Version : هفتِ بیجار



coronaa
دوشنبه 29 دی 1393, 09:49 صبح
سلام مهندس عزیز
یه سوال :
من اگه یه آرایه 1 در 100 داشته باشم. چطوری میتونم هر 10 تا 10 تا عدد رو در یک سطر قرار بدم؟
m = rand(1,100)
مثلاً 10 تای اول در سطر اول، 10 تا دوم در سطر دوم و ...

rahnema1
دوشنبه 29 دی 1393, 14:03 عصر
سلام مهندس عزیز
یه سوال :
من اگه یه آرایه 1 در 100 داشته باشم. چطوری میتونم هر 10 تا 10 تا عدد رو در یک سطر قرار بدم؟
m = rand(1,100)
مثلاً 10 تای اول در سطر اول، 10 تا دوم در سطر دوم و ...

سلام
m1 = reshape(m , 10 ,10 )';

هفت بیجار چیه؟

coronaa
دوشنبه 29 دی 1393, 14:19 عصر
مرسی. تازه با دستور reshape آشنا شدم :)

rahnema1
دوشنبه 29 دی 1393, 14:27 عصر
مرسی. تازه با دستور reshape آشنا شدم :)

یادم میاد توی هفت بیجار قبلی گفته بودم یه نگاهی به یک فایل pdf به نام refcard متلب بندازید که دستورات مهم و پرکاربرد متلب داخلش هست مثل این:
http://www.geog.ucsb.edu/~pingel/210b/general/matlab_refcard.pdf

coronaa
دوشنبه 29 دی 1393, 14:42 عصر
بله. چندتا از اون فایل ها رو هم دانلود کردم ولی بعضیا رو نمیدونم که کاربردشون کجاست.
واسه همین سوال هم من فکر میکردم که باید برنامه بنویسیم!
دوباره باید یه نگاهی بندازم. ممنونم که یادآوری کردین :)

coronaa
یک شنبه 05 بهمن 1393, 23:55 عصر
اینو چطوری میتونم توی متلب اجرا کنم :

u = K D

که K یک عدد ثابت و D اپراتور مشتق نسبت به زمان است. برای من D مهمه که چطوری باید نوشته بشه!

rahnema1
دوشنبه 06 بهمن 1393, 06:03 صبح
اینو چطوری میتونم توی متلب اجرا کنم :

u = K D

که K یک عدد ثابت و D اپراتور مشتق نسبت به زمان است. برای من D مهمه که چطوری باید نوشته بشه!

سلام
شاید منظور ماتریس ژاکوبی jacobian باشه. لطفا توضیحات بیشتری بدید

coronaa
دوشنبه 06 بهمن 1393, 09:06 صبح
سلام
شاید منظور ماتریس ژاکوبی jacobian باشه. لطفا توضیحات بیشتری بدید
بیشتر از این نمیدونم. چون یکمی برام مبهم بود اینجا مطرح کردم.
پس اجازه بدین بیشتر مطالعه کنم.

coronaa
دوشنبه 06 بهمن 1393, 19:38 عصر
اینو میشه به ماتریس تبدیل کرد؟


RA = {1 [1 0];[-1 2] 3}


خواستم از دستور cell2mat استفاده کنم ولی خطا داد!
??? Error using ==> cat
CAT arguments dimensions are not consistent.

Error in ==> cell2mat at 89
m{n} = cat(1,c{:,n});

rahnema1
دوشنبه 06 بهمن 1393, 20:47 عصر
چه ماتریسی باید بشه؟ چند در چند؟ عناصر در کدام خانه ماتریس قرار بگیرند؟

coronaa
دوشنبه 06 بهمن 1393, 22:30 عصر
چه ماتریسی باید بشه؟ چند در چند؟ عناصر در کدام خانه ماتریس قرار بگیرند؟
خب مشخصه دیگه. RA باید یک ماتریس 2 در 3 بشه. بصورت سلولی اینطوری میشه :
RA =

[ 1] [1x2 double]
[1x2 double] [ 3]
و بصورت ماتریسی باید بصورت زیر بشه :
RA =

1 1 0
-1 2 3
اینطوری نباید بشه؟
با دستور cell2mat انجام نمیشه!

rahnema1
سه شنبه 07 بهمن 1393, 06:58 صبح
فکر کنم اینجور بهتر باشه

arr = [];
for i = 1:size(RA, 1)
arr = [arr; cell2mat(RA(i, :))];
end
disp(arr)

coronaa
سه شنبه 07 بهمن 1393, 09:06 صبح
ممنونم. با این کد انجام شد ولی دلیل اینکه مستقیم با دستور cell2mat انجام نمیشه چیه؟
مگه سلول باید مربعی باشه؟ چون یه سلول مربعی رو تست کردم شده بود!

rahnema1
چهارشنبه 08 بهمن 1393, 06:59 صبح
علتش اینه که ابتدا عناصری که در یک ستون قرار دارند به صورت سطری با هم تر کیب میشن. سپس اون ترکیب به صورت ستونی با هم انجام می گیره اگه ابعاد اونها جوری باشه که نتونن ترکیب بشن خطا میده
مثلا این را ببینید

C = {[1], [2 3 4];
[5; 9], [6 7 8; 10 11 12]}

1 2 3 4

5 6 7 8
9 10 11 12

روند ترکیب به این صورته:

1 2 3 4
5 6 7 8
9 10 11 12

1 2 3 4
5 6 7 8
9 10 11 12

اما در مثال شما یه همچین چیزی داریم

[1] [1 0]
[-1 2] [3]

حالا عناصر موجود در ستون 1 می خواهند باهم ترکیب بشن به این صورت
[1; -1 2]
به علت اینکه ابعادشون متناسب نیست خطا میده
با این حساب میشه از عناصر داخل سلول ترانسپوز بگیرید که ابعاد عناصر موجود در یک ستون باهم هماهنگ بشه

transRA = cellfun('transpose', RA', 'UniformOutput', false)
cell2mat(transRA)'

coronaa
پنج شنبه 16 بهمن 1393, 15:30 عصر
توی متلب دستوری وجود داره که یک رشته رو بگیره و تک تک حروف رو از هم جدا کنه؟ و بعدش بتونه حروف رو بصورت رندوم قاطی کنه؟

rahnema1
پنج شنبه 16 بهمن 1393, 15:37 عصر
توی متلب دستوری وجود داره که یک رشته رو بگیره و تک تک حروف رو از هم جدا کنه؟ و بعدش بتونه حروف رو بصورت رندوم قاطی کنه؟


reshte = 'This page was last modified on'
reshte(randperm( length(reshte)))

coronaa
پنج شنبه 16 بهمن 1393, 19:59 عصر
ممنونم.
اگه بخوام هر حرفی که چاپ شد، یک فاصله قرار بده چی؟یا بینشون با ویرگول جدا شده باشه!
مثلاً همین رشته ی بالا رو بصورت زیر نشون بده :

d p i a w n a s g o o i d e l T i h s t f s e m a

rahnema1
پنج شنبه 16 بهمن 1393, 20:22 عصر
ممنونم.
اگه بخوام هر حرفی که چاپ شد، یک فاصله قرار بده چی؟یا بینشون با ویرگول جدا شده باشه!
مثلاً همین رشته ی بالا رو بصورت زیر نشون بده :

d p i a w n a s g o o i d e l T i h s t f s e m a


این شکلی میشه نوشت

reshte = 'This page was last modified on'
L = length(reshte);
reshape([reshte(randperm(L)); repmat(' ', 1, L)], 1, L * 2)

coronaa
پنج شنبه 16 بهمن 1393, 21:09 عصر
کار repmat چیه؟ مثل reshape عمل میکنه؟
دقیقاً متوجه نشدم آرگومان داخل repmat چیکار میکنه!
یه سوال دیگه :
میشه کاری کرد که space داخل رشته جز کاراکتر حساب نشه؟

rahnema1
پنج شنبه 16 بهمن 1393, 21:13 عصر
repmat برای تکرار یک چیز به تعداد دلخواهه
مثلا میخوام به تعداد 5 بار حرف اسپیس پشت سر هم تکرار بشه یا اینکه بخوام یک آرایه را چند بار پشت سر هم تکرار کنم
برای حذف اسپیس:
reshte(reshte ~= ' ')

coronaa
پنج شنبه 23 بهمن 1393, 12:38 عصر
سلام
میخوام یه برنامه بنویسم که اعداد تصادفی ایجاد کنه بین 0 تا 100 برای x و y . بعد پلات کنه. ضمن اینکه مقادیری که در بازه ی 40 تا 60 قرار دارند رو با یه رنگ جداگانه ای نشون بده. من اینطوری نوشتم ولی جواب نمیده :
clc;
clear all;
close all;

x=unifrnd(0,100,50,1);
y=unifrnd(0,100,50,1);
if x>40 & x<60
plot(x,y,'ro')

else
plot(x,y,'o')
end

rahnema1
پنج شنبه 23 بهمن 1393, 15:33 عصر
سلام
نمیدونم نظورتون را درست دریافت کردم یا نه

x=unifrnd(0,100,50,1);
y=unifrnd(0,100,50,1);
indexX = x > 40 & x < 60;
plot(x(indexX),y(indexX),'ro')
hold on;
plot(x(~indexX),y(~indexX),'go')

coronaa
پنج شنبه 23 بهمن 1393, 22:37 عصر
ممنونم. دقیقاً همینو میخواستم. حالا اگه بخوایم برای y هم محدوده بذاریم باید indexY درست کنیم؟
من به صورت زیر نوشتم ولی خطا میده :
x=unifrnd(0,100,50,1);
y=unifrnd(0,100,50,1);
indexX = x > 40 & x < 60;
indexY = y > 40 & y < 60;
plot(x(indexX),y(indexY),'ro')
hold on;
plot(x(~indexX),y(~indexY),'go')

rahnema1
جمعه 24 بهمن 1393, 08:42 صبح
ممنونم. دقیقاً همینو میخواستم. حالا اگه بخوایم برای y هم محدوده بذاریم باید indexY درست کنیم؟
من به صورت زیر نوشتم ولی خطا میده :
x=unifrnd(0,100,50,1);
y=unifrnd(0,100,50,1);
indexX = x > 40 & x < 60;
indexY = y > 40 & y < 60;
plot(x(indexX),y(indexY),'ro')
hold on;
plot(x(~indexX),y(~indexY),'go')


x=unifrnd(0,100,50,1);
y=unifrnd(0,100,50,1);
indexXY = x > 40 & x < 60 & y > 40 & y < 60;
plot(x(indexXY),y(indexXY),'ro')
hold on;
plot(x(~indexXY),y(~indexXY),'go')

coronaa
جمعه 24 بهمن 1393, 23:25 عصر
مهندس ببخشید،
قبلاً یه کد فازی نوشته بودی که میومد یک رنج از اعداد رو به دو گروه تقسیم می کردد. من یه مقاله دیدم که میومد قوانین فازی و توابع عضویت رو با استفاده از الگوریتم بهینه سازی، بهینه میکرد تا جواب بهتری بگیریم. حالا این کدی که پایین میذارم زیاد قانون و توابع عضویت نداره. اگه زیاد باشه میشه از این الگوریتمها استفاده کرد. میخوام بدونم چطوری این فازی با این الگوریتم ها ارتباط برقرار میکنه؟شما اطلاعی دارید؟
مثلاً بشه قوانین و توابع عضویت یک سیستم فازی رو با الگوریتم ژنتیک، PSO و یا cuckoo بهینه سازی کرد!
clc;
clear all;
close all;

P =unifrnd(1,100,1,20);
Range=0:100;
aa = newfis ('sefroyek', 'sugeno', ...
'min', 'max', ...
'min', 'max', 'wtaver');
aa = addvar (aa, 'input', 'P', [min(Range) max(Range)]);
aa = addmf (aa, 'input', 1, 'Low', 'trapmf', [min(Range)-5 min(Range) range(Range)*0.45+min(Range) range(Range)*0.55+min(Range)]);
aa = addmf (aa, 'input', 1, 'High', 'trapmf', [range(Range)*0.45+min(Range) range(Range)*0.55+min(Range) max(Range) max(Range)+5]);
aa = addvar (aa, 'output', 'sefroyek', [0 1]);
aa = addmf (aa, 'output', 1, 'Low', 'constant', 0);
aa = addmf (aa, 'output', 1, 'High', 'constant',1);
aa = addrule (aa, [1 1 1 1;2 2 1 1]);
% plotfis(aa)
figure
plotmf (aa, 'input', 1);
% plotmf (aa, 'output', 1);
pp=evalfis(P,aa) ;
fprintf('\n\nCoalition of Group 1 :\n P1 =');
iGroup1=find(pp<0.5);
P1=P(iGroup1); disp(P1);
fprintf('\n\nCoalition of Group 2 :\n P2 =');
iGroup2=find(pp>=0.5);
P2=P(iGroup2); disp(P2);

rahnema1
شنبه 25 بهمن 1393, 06:11 صبح
ANFIS با استفاده از شبکه عصبی پارامترهای تابع عضویت را بهینه می کنه

coronaa
یک شنبه 26 بهمن 1393, 07:38 صبح
سلام.
من دو قسمت داده دارم که اومدم رگرسیون خطی رو بدست آوردم. میخوام ایندو تا رو با subplot توی یک figure قرار بدم. کد پایین رو نوشتم ولی نشد!
کجاش اشتباهه؟
clc;
clear;
close all;

x1=rand(1,100);
y1=x1+0.1*rand(1,100);
subplot(1,2,1)
plotregression(x1,y1);
x2=rand(1,100);
y2=x2+0.1*rand(1,100);
subplot(1,2,2)
plotregression(x2,y2);

coronaa
یک شنبه 26 بهمن 1393, 07:43 صبح
یه سوال دیگه :
من یه رشته دارم بصورت زیر :
st='ABC def:1393'

اگه بخوام یک قسمتی از رشته رو حذف کنم چطوریه؟ مثلاً بخوام سه حرف اول که ABC هست رو حذف کنم.

rahnema1
یک شنبه 26 بهمن 1393, 07:53 صبح
سلام.
من دو قسمت داده دارم که اومدم رگرسیون خطی رو بدست آوردم. میخوام ایندو تا رو با subplot توی یک figure قرار بدم. کد پایین رو نوشتم ولی نشد!
کجاش اشتباهه؟
clc;
clear;
close all;

x1=rand(1,100);
y1=x1+0.1*rand(1,100);
subplot(1,2,1)
plotregression(x1,y1);
x2=rand(1,100);
y2=x2+0.1*rand(1,100);
subplot(1,2,2)
plotregression(x2,y2);

سلام
شما اومدید رگرسیون بگیرید نشد یا subplot بگیرید نشد؟

rahnema1
یک شنبه 26 بهمن 1393, 07:54 صبح
یه سوال دیگه :
من یه رشته دارم بصورت زیر :
st='ABC def:1393'

اگه بخوام یک قسمتی از رشته رو حذف کنم چطوریه؟ مثلاً بخوام سه حرف اول که ABC هست رو حذف کنم.

درست شبیه آرایه
st(4:end)

coronaa
یک شنبه 26 بهمن 1393, 08:56 صبح
سلام
شما اومدید رگرسیون بگیرید نشد یا subplot بگیرید نشد؟
رگرسیون میگیره ولی دو تا تصویر رو در یک figure قرار نمیده. یعنی subplot عمل نمیکنه!
دو تا تصویر جدا جدا میسازه.

coronaa
یک شنبه 26 بهمن 1393, 09:01 صبح
ببخشید یه سوال دیگه هم دارم:
روابطی که پایین گذاشتم، بدست آورن انتگرال خطای مطلق یا همون Integral of Absolute Error (IAE) یک سیستم برای ارزیابی نتایج هست :
128482

من یه قسمتی از این روابط رو با کد نوشتم. نمیدونم درسته اینطوری یا نه!
حالا نمیدونم چطوری باید وزنگذاری بکنم.

t=0:0.5:200;
out1=rand(1,100);
out2=rand(1,100);
e1=.1*out1;
e2=.1*out2;
f1=int(abs(e1),0,t)+int(abs(e2),0,t);
f2=int(abs(out1(t)-out1(t-1)),0,t)+int(abs(out2(t)-out2(t-1)),0,t);

rahnema1
یک شنبه 26 بهمن 1393, 12:30 عصر
رگرسیون میگیره ولی دو تا تصویر رو در یک figure قرار نمیده. یعنی subplot عمل نمیکنه!
دو تا تصویر جدا جدا میسازه.

octave دستور plotregression نداره اما این دستور plotregression را به دو شکل می شه نوشت که شکل دوم چند تا پلات با هم می کشه به هلپ متلب مراجعه کنید

rahnema1
یک شنبه 26 بهمن 1393, 12:32 عصر
ببخشید یه سوال دیگه هم دارم:
روابطی که پایین گذاشتم، بدست آورن انتگرال خطای مطلق یا همون Integral of Absolute Error (IAE) یک سیستم برای ارزیابی نتایج هست :
128482

من یه قسمتی از این روابط رو با کد نوشتم. نمیدونم درسته اینطوری یا نه!
حالا نمیدونم چطوری باید وزنگذاری بکنم.

t=0:0.5:200;
out1=rand(1,100);
out2=rand(1,100);
e1=.1*out1;
e2=.1*out2;
f1=int(abs(e1),0,t)+int(abs(e2),0,t);
f2=int(abs(out1(t)-out1(t-1)),0,t)+int(abs(out2(t)-out2(t-1)),0,t);
دستور int برای انتگرال سمبولیک روی یک تابع هست در صورتی که شما اینجا یک بردار دارید که کافیه از دستور sum استفاده کنید
باید اون مقاله یا مقاله های مرتیط را بهدقت مطالعه کنید تا معلوم بشه وزن ها چه طوریه

coronaa
یک شنبه 26 بهمن 1393, 16:45 عصر
octave دستور plotregression نداره اما این دستور plotregression را به دو شکل می شه نوشت که شکل دوم چند تا پلات با هم می کشه به هلپ متلب مراجعه کنید
مهندس مرسی. حل شد. ولی هنوز یه مشکلی دارم!
کدش به این صورته :
x1=rand(1,100);
y1=x1+0.1*rand(1,100);
x2=rand(1,100);
y2=x2+0.1*rand(1,100);
plotregression(x1,y1,'Link(1)',x2,x2,'Link(2)');
تصویرش به این صورت شد:

128497

حالا میخوام این عبارت Link(1) که مینویسم سطر اول باشه و مقدار رگرسیون رو که خودش نمایش میده سطر پایین باشه. نمیشه؟
بعد میخوام یه مقادیری رو هم بعد از مقدار رگرسیون اضافه کنم. مثل RMSE و ....
وقتی یه تصویر بود تونستم با دستور title این کار رو انجام بدم ولی الآن که دوتایی شد نمیشه!

coronaa
یک شنبه 26 بهمن 1393, 16:56 عصر
دستور int برای انتگرال سمبولیک روی یک تابع هست در صورتی که شما اینجا یک بردار دارید که کافیه از دستور sum استفاده کنید
باید اون مقاله یا مقاله های مرتیط را بهدقت مطالعه کنید تا معلوم بشه وزن ها چه طوریه
خب اگه از دستور sum استفاده کنیم که فقط یک عدد اسکالر داریم!
من باید باید انتگرال رو در هر زمان جدا گانه حساب کنم تا یک بردار داشته باشم. مگه اینطوری نیست؟
چون میخوام مثل همون رگرسیون یه نمودار رسم کنم.
در مورد وزن هم چیزی صحبت نکرده. احتمالاً مانند ماتریس هست که باید برای هر درایه ارزش گذاری کنیم.
نظر شما چیه؟

rahnema1
یک شنبه 26 بهمن 1393, 22:32 عصر
مهندس مرسی. حل شد. ولی هنوز یه مشکلی دارم!
کدش به این صورته :
x1=rand(1,100);
y1=x1+0.1*rand(1,100);
x2=rand(1,100);
y2=x2+0.1*rand(1,100);
plotregression(x1,y1,'Link(1)',x2,x2,'Link(2)');
تصویرش به این صورت شد:

128497

حالا میخوام این عبارت Link(1) که مینویسم سطر اول باشه و مقدار رگرسیون رو که خودش نمایش میده سطر پایین باشه. نمیشه؟
بعد میخوام یه مقادیری رو هم بعد از مقدار رگرسیون اضافه کنم. مثل RMSE و ....
وقتی یه تصویر بود تونستم با دستور title این کار رو انجام بدم ولی الآن که دوتایی شد نمیشه!
خب شما می تونید از فرمولی که به شما میده
1*Target + 0.043
استفاده کنید و یک نمودار دلخواه را ایجاد کنید

rahnema1
یک شنبه 26 بهمن 1393, 22:33 عصر
خب اگه از دستور sum استفاده کنیم که فقط یک عدد اسکالر داریم!
من باید باید انتگرال رو در هر زمان جدا گانه حساب کنم تا یک بردار داشته باشم. مگه اینطوری نیست؟
چون میخوام مثل همون رگرسیون یه نمودار رسم کنم.
در مورد وزن هم چیزی صحبت نکرده. احتمالاً مانند ماتریس هست که باید برای هر درایه ارزش گذاری کنیم.
نظر شما چیه؟

مگه قرار نیست انتگرال در طول زمان گرفته بشه؟ پس یک عدد به دست میاد

coronaa
یک شنبه 26 بهمن 1393, 22:59 عصر
خب شما می تونید از فرمولی که به شما میده
1*Target + 0.043
استفاده کنید و یک نمودار دلخواه را ایجاد کنید
خب من که Target رو ندارم. توی workspace چنین مقداری وجود نداره که بخوام نمودار جداگانه ای رسم کنم.

coronaa
یک شنبه 26 بهمن 1393, 23:05 عصر
مگه قرار نیست انتگرال در طول زمان گرفته بشه؟ پس یک عدد به دست میاد
بله درسته. فکر کنم اشتباه کردم!
ولی باید مقداری بین صفر تا 1 باشه.
حالا این کدی که میذارم کجاش اشتباهه؟
t=0:0.5:200;
out1=rand(1,100);
out2=rand(1,100);
e1=.1*out1;
e2=.1*out2;
f1=sum(abs(e1))+sum(abs(e2));
f2=sum(abs(out1(t+1)-out1(t)))+sum(abs(out2(t+1)-out2(t)));

nina222
دوشنبه 27 بهمن 1393, 00:39 صبح
سلام
m1 = reshape(m , 10 ,10 )';

هفت بیجار چیه؟

هفت بیجار چیه؟[/QUOTE]

سلام داشتم این پست رو می خوندم که به این سئوال بر خوردم هفت بیجار چیه؟
هفت بیجار اسم یه نوع ترشی خوش مزه تو شمال هستش .
اگه بخوام معنی این جمله رو هم بگم (هفت که همون 7 خودمون هست و بیجار هم به معنی شالیزار هست).:خجالت:

ehsan_faal
دوشنبه 27 بهمن 1393, 00:52 صبح
حالا این اسم چه ربطی به این تاپیک داره....:متفکر:

nina222
دوشنبه 27 بهمن 1393, 01:16 صبح
حالا این اسم چه ربطی به این تاپیک داره....:متفکر:

شاید منظورشون این بوده که سئوالاتشون متنوع هست ( که البته خیلی هم جالب بود:تشویق:) و حالا اگه باز می پرسید چه ربطی داره؟ اون دیگه بر می گرده به طرز تهیه این ترشی.:چشمک:

rahnema1
دوشنبه 27 بهمن 1393, 08:33 صبح
شاید منظورشون این بوده که سئوالاتشون متنوع هست ( که البته خیلی هم جالب بود:تشویق:) و حالا اگه باز می پرسید چه ربطی داره؟ اون دیگه بر می گرده به طرز تهیه این ترشی.:چشمک:

آقای (مهندسسسسسس) کرونا جوابشو تو پیام خصوصی بهم دادن که اینجا میذارم البته ایشون کلا 2 تا تاپیک بیشتر تو این سایت ایجاد نکردن اولیش به نام حل تابع چند جمله ای بود که حدود 500 تا پست داخلش ایجاد شد از مطالب مختلف:
http://barnamenevis.org/showthread.php?460429
دومیش هم هفت بیجاره



سلام مهندس،
میدوارم که حالتون خوب باشه.
هفت بیجار یه اسم مازندرانی هست. یعنی اسم یه ترشی هست که همه چیز توش میریزن.
بعنوان اصطلاح هم استفاده میشه. یعنی همه چیز قاطی پاتیه :))
اون تاپیک رو ایجاد کردم تا از این به بعد سوالام رو اونجا بپرسم و چون از موضوعات مختلفی سوال میپرسم اسمش رو گذاشتم هفتِ بیجار :))
فکر کردین اسم پروژه ای تو ناسا هست که دارم براشون انجام میدم؟ :))))
سلام به شما
قوطی عطاری هم اسم خوبیه :چشمک:
اما فکر کنم مدیران سایت با اینجور تاپیکها مشکل دارن و معمولا توصیه می کنند برای هر موضوع یک تاپیک ایجاد بشه
می ترسم به دفعه [...] کل تاپیک را حذف کنن...
انشاالله که این کار رو نمیکنن. با این حرفت تصمیم گرفتم تمام صفحات رو ذخیره کنم. چون اینا واسه من گنجینه هست. البته بعضیا رو هم که زیاد ازشون استفاده میکنم رو توی word مینویسمشون.
حالا در ادامه ذکر میکنم که هفت بیجار یه الگوریتم جدید توی شبکه عصبی هست :)

coronaa
دوشنبه 27 بهمن 1393, 08:34 صبح
مهندس من به این صورت میخوام :

128522

تصویر رگرسیون هست ولی من تایتلش رو ادیت کردم و خودم یه سری رشته و عدد بهش اضافه کردم. کد بصورت زیره :
plotregression(reff1,q1);
h1=get(gca,'Title');
st1=get(h1,'String');
st1=st1(12:end);
title({'Validation of Link(1)';[st1,' & ' 'R^2 = ' num2str(R2_1),' & ' 'RMSE = ' num2str(sqrt(MSE1))]});

ولی برای دوتا تصویر یکجا نمیشه!

rahnema1
دوشنبه 27 بهمن 1393, 08:54 صبح
فکر کنم دستور رگرسیون تو متلب زیاد باشه اگه بتونی از یکی دیگه استفاده کن

coronaa
دوشنبه 27 بهمن 1393, 08:57 صبح
فکر کنم دستور رگرسیون تو متلب زیاد باشه اگه بتونی از یکی دیگه استفاده کن
من میخوام سعی بکنم از دستور subplot یکاری بکنم که این دوتا تصویر توی یک figure قرار بگیرن. اینطوری برام راحتتره. ولی فعلن که نتونستم سر در بیارم چرا اینا توی subplot نمیرن.
اگه نشد که هیچی. بیخیال میشم.
ممنونم.

rahnema1
دوشنبه 27 بهمن 1393, 09:03 صبح
متاسفانه برنامه octave دستور plotregression نداره وگرنه حتما امتحانش میکردم

coronaa
دوشنبه 27 بهمن 1393, 18:58 عصر
بله درسته. فکر کنم اشتباه کردم!
ولی باید مقداری بین صفر تا 1 باشه.
حالا این کدی که میذارم کجاش اشتباهه؟
t=0:0.5:200;
out1=rand(1,100);
out2=rand(1,100);
e1=.1*out1;
e2=.1*out2;
f1=sum(abs(e1))+sum(abs(e2));
f2=sum(abs(out1(t+1)-out1(t)))+sum(abs(out2(t+1)-out2(t)));
مهندس ببخشید.
تا f1 فکر کنم درست نوشتم. الآن روی f2 خطا میده. میشه بگید مشکلش چیه؟
فعلاً به وزنها کاری ندارم.

rahnema1
دوشنبه 27 بهمن 1393, 19:18 عصر
باید اینجور باشه قاعدتا
f2 = sum(abs(diff(out1))) + sum(abs(diff(out2)));

coronaa
دوشنبه 27 بهمن 1393, 19:35 عصر
باید اینجور باشه قاعدتا
f2 = sum(abs(diff(out1))) + sum(abs(diff(out2)));
وقتی delat T داره دیگه زمان دخیل نیست؟

rahnema1
دوشنبه 27 بهمن 1393, 19:49 عصر
شاید لازم باشه اون جمع ضربدر واحد اپسیلون زمان بشه که این هم تنها یک ضریبه که نهایتا در فرمول بهینه سازی تاثیری نداره

coronaa
دوشنبه 27 بهمن 1393, 19:56 عصر
میدونیم که با دستور rand میشه یه نویز تصادفی ساخت. به نظرت میشه بگیم به مدت مثلاً 4 ثانیه داده تصادفی ایجاد کن؟

rahnema1
دوشنبه 27 بهمن 1393, 20:02 عصر
بسته به این داره که در هر ثانیه چند تا نمونه گرفته باشیم اگه در هر ثانیه صد تا نمونه بگیریم میشه 400 عدد رندوم

coronaa
دوشنبه 27 بهمن 1393, 20:10 عصر
بسته به این داره که در هر ثانیه چند تا نمونه گرفته باشیم اگه در هر ثانیه صد تا نمونه بگیریم میشه 400 عدد رندوم
یعنی این دستور rand برای یک ثانیه رو تولید میکنه؟
یعنی باید بگم :
rand(1,400)
درسته؟

rahnema1
دوشنبه 27 بهمن 1393, 20:15 عصر
اصلا rand نمیدونه ثانیه چیه. این ما هستیم که مشخص می کنیم که چند تا تولید بشه بله همین دستور درسته

coronaa
دوشنبه 27 بهمن 1393, 20:24 عصر
اصلا rand نمیدونه ثانیه چیه. این ما هستیم که مشخص می کنیم که چند تا تولید بشه بله همین دستور درسته
با این میشه یه داده تصادفی با میانگین صفر و واریانس 1 تولید کرد :
random('Normal',0,1,1,400)

rahnema1
دوشنبه 27 بهمن 1393, 20:27 عصر
این توزیع نرماله قبلی توزیع یکنواخت بود

coronaa
دوشنبه 27 بهمن 1393, 20:33 عصر
این توزیع نرماله قبلی توزیع یکنواخت بود
برای ایجاد نویز، کدوم بهتره؟

rahnema1
دوشنبه 27 بهمن 1393, 20:43 عصر
بستگی به سیستم شما داره. انواع و اقسام نویز داریم

coronaa
پنج شنبه 30 بهمن 1393, 23:29 عصر
سلام
از نویسنده مقاله در مورد وزنها پرسیدم. گفت هرکدوم رو 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 بین صفر و یک هست.

rahnema1
جمعه 01 اسفند 1393, 12:59 عصر
باید چند دور مقاله را مطالعه کرد تا مشخص بشه چی به چیه
حالا مثلا هر جا خیلی سخت باشه و درکش هم خیلی مشکل باشه من خودم میام پیش نیازهای اون را مطالعه می کنم تا بتونم مطلب را درک کنم

coronaa
جمعه 01 اسفند 1393, 13:17 عصر
ممنونم.
توی این مقاله که زیاد توضیح نداد.
خودمم جداگانه سرچ کردم هم اون چیزی که میخواستم نبود.
حالا منم بیشتر مطالعه میکنم تا ببینم چطوریه؟

coronaa
پنج شنبه 28 اسفند 1393, 08:55 صبح
با سلام مجدد خدمت دوست عزیزمون :)
این رابطه رو چطوری میشه پیاده سازی کرد؟
باید از sum استفاده کنیم یا حلقه for ؟؟؟
129582

rahnema1
پنج شنبه 28 اسفند 1393, 10:52 صبح
با سلام مجدد خدمت دوست عزیزمون :)
این رابطه رو چطوری میشه پیاده سازی کرد؟
باید از sum استفاده کنیم یا حلقه for ؟؟؟
129582

سلام
برای محاسبات سمبولیک من از Maxima استفاده می کنم که این فرمول به این صورت میتونه داخل اون نوشته بشه:
limit(sum((-1)^ k* binomial(alpha, k)*f(t-k*h), k, 0, (t-a)/ h)/ h^alpha, h, 0)

coronaa
پنج شنبه 28 اسفند 1393, 17:10 عصر
سلام
برای محاسبات سمبولیک من از Maxima استفاده می کنم که این فرمول به این صورت میتونه داخل اون نوشته بشه:
limit(sum((-1)^ k* binomial(alpha, k)*f(t-k*h), k, 0, (t-a)/ h)/ h^alpha, h, 0)
ممنونم ولی توی این نرم افزار به دردم نمیخوره. اگه با maxima انجام بدم میتونم از متلب Import کنم؟
چون بقیه ی شبیه سازیها که قبل و بعد از این فرمولی که قراره بیاد باید توی متلب انجام بشه!

rahnema1
پنج شنبه 28 اسفند 1393, 18:12 عصر
ممنونم ولی توی این نرم افزار به دردم نمیخوره. اگه با maxima انجام بدم میتونم از متلب Import کنم؟
چون بقیه ی شبیه سازیها که قبل و بعد از این فرمولی که قراره بیاد باید توی متلب انجام بشه!
من فقط maxima در اختیار دارم. نتایج هم اگه عدد باشه که دیگه با کپی و پیست هم میشه انجام داد. به نظرم نباید روی ابزار تعصب داشت
حالا شاید کسی به این تاپیک توجه نکنه اگه بتونید یک تاپیک جدید ایجاد کنید و توی اون بپرسید شاید دوستان در خصوص متلب اطلاع داشته باشن

coronaa
پنج شنبه 28 اسفند 1393, 20:15 عصر
من فقط maxima در اختیار دارم. نتایج هم اگه عدد باشه که دیگه با کپی و پیست هم میشه انجام داد. به نظرم نباید روی ابزار تعصب داشت
حالا شاید کسی به این تاپیک توجه نکنه اگه بتونید یک تاپیک جدید ایجاد کنید و توی اون بپرسید شاید دوستان در خصوص متلب اطلاع داشته باشن
بحث تعصب داشتن روی یک نرم افزار خاص نیست. بلکه من باید چند موضوع رو با هم ادغام کنم که شاید فط maxima یا octave نتونه اون کار رو انجام بده.
من ابتدا باید با فازی یه سری پارامترها رو بدست بیارم که مسلماً توی متلب باید باشه. بعد باید روابط مرتبه کسری رو پیاده سازی کنم (همین فرمول و چندتا دیگه) و سپس باید با متلب کنترلرم رو طراحی کنم. پس نمیشه که من با maxima انجام بدم و چون این کدها باید به هم پیوسته باشن نمیشه فقط نتایج رو از این بگیرم و ببرم توی متلب.
در ضمن، من اینجا فقط شما رو قبول دارم :)
پیشاپیش سال نو شما هم مبارک :لبخندساده:

rahnema1
پنج شنبه 28 اسفند 1393, 23:13 عصر
بحث تعصب داشتن روی یک نرم افزار خاص نیست. بلکه من باید چند موضوع رو با هم ادغام کنم که شاید فط maxima یا octave نتونه اون کار رو انجام بده.
من ابتدا باید با فازی یه سری پارامترها رو بدست بیارم که مسلماً توی متلب باید باشه. بعد باید روابط مرتبه کسری رو پیاده سازی کنم (همین فرمول و چندتا دیگه) و سپس باید با متلب کنترلرم رو طراحی کنم. پس نمیشه که من با maxima انجام بدم و چون این کدها باید به هم پیوسته باشن نمیشه فقط نتایج رو از این بگیرم و ببرم توی متلب.

حالا شاید بشه بعضی قسمتها را از جای دیگه گرفت که در هر صورت بستگی به کار شما داره داره


در ضمن، من اینجا فقط شما رو قبول دارم :)


:) این نظر لطفتونه. متاسفانه این تالار خیلی سوت و کوره و کمتر کسی تمایل داره بیاد فعالیت کنه مطلبی بذاره و یا به سوالی پاسخ بده به این خاطر هست که شاید پستهای یکی مثل من به چشم بیاد


پیشاپیش سال نو شما هم مبارک :لبخندساده:
سال نو شما هم مبارک. :) شما هم سال خوبی داشته باشید خدا کنه سال جدید بهتر از سال کهنه باشه

coronaa
شنبه 01 فروردین 1394, 23:49 عصر
سلام
من دارم با الگوریتم ژنتیک کار میکنم.
یه 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);

rahnema1
یک شنبه 02 فروردین 1394, 13:32 عصر
سلام نه با تابع ga متلب کار نکردم الان اجرا نمیشه؟

coronaa
یک شنبه 02 فروردین 1394, 15:34 عصر
سلام نه با تابع ga متلب کار نکردم الان اجرا نمیشه؟
پیداش کردم. قبلاً همه ی lb و ub هر دو متغیر از 0.001 تا 10 بود. الآن درستش کردم. باید بصورت برداری مینوشتم.
به اینصورت :

K_opt = ga(@sys_performance, 2 , [], [], [], [], [1,1] , [10,2], [], options);

coronaa
سه شنبه 04 فروردین 1394, 07:54 صبح
سلام
یه سوال :

چرا عملیاتی که توی یک فانکشن صورت میگیره در 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 کار میکنه یا نه!

rahnema1
سه شنبه 04 فروردین 1394, 08:55 صبح
شما می تونید از یه سری متغیر 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

coronaa
سه شنبه 04 فروردین 1394, 13:30 عصر
برا من با آرایه بهتره فکر کنم. ولی هر دو الآن خطا میده :

??? 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 ذخیره بشه. البته تعداد تکرار تابع دست من نیست!

rahnema1
سه شنبه 04 فروردین 1394, 18:10 عصر
بذارید دقیقتر توضیح بدم یک فایل به نام myfunc.m ایجاد کنید و داخلش تابع myfunc را بذارید و این تابع مثلا همون تابعی هست که در الگوریتم ژنتیک استفاده میشه که نهایتا مقادیر مین و ماکس توی natayej ذخیره میشه

coronaa
سه شنبه 04 فروردین 1394, 18:54 عصر
نشد باز!
اشتباه میذارم؟
این تابعی که باید با ژنتیک اجرا بشه :

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 ];

rahnema1
سه شنبه 04 فروردین 1394, 20:27 عصر
شما از همون cell استفاده کنید. اون را عمدا گذاشتم که اگه پارامترهایی که بخواهند در natayej قرار بگیرند و در صورتیکه هم اندازه نباشند به راحتی در cell جا بشن ولی وقتی که هم اندازه نباشند نمیتونن در یک آرایه جا بشن

coronaa
سه شنبه 04 فروردین 1394, 22:48 عصر
مرسی. انجام شد.
ولی نفهمیدم از اینکه گفتید هم اندازه نباشن!
خب 5 تا پارامتر بدست میاد. که هر 5 تا هم یه مقدار عددی هستن. مگه تعداد رقمهاشونم مهمه؟

coronaa
سه شنبه 04 فروردین 1394, 23:00 عصر
xxxxxxxxxxxxxxx
یه سوال پرسیده بودم که حلش کردم :)

coronaa
دوشنبه 17 فروردین 1394, 16:03 عصر
من باید یه کدوم از این کامپایلرها رو برای متلب انتخاب کنم. آیا از نظر سرعت فرقی با هم دارن؟ کدومش در اجرا کردن سرعت بیشتری داره؟


[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

rahnema1
دوشنبه 17 فروردین 1394, 16:33 عصر
من باید یه کدوم از این کامپایلرها رو برای متلب انتخاب کنم. آیا از نظر سرعت فرقی با هم دارن؟ کدومش در اجرا کردن سرعت بیشتری داره؟


[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

سلام
همون visual c++ 2012 انتخاب کنید که فکر کنم دردسرش کمتر باشه و سرعت هم خوبه

coronaa
چهارشنبه 26 فروردین 1394, 14:43 عصر
سلام

این یه سری نقاطی هست که رسم کردم.

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 مقادیر عمودی.

rahnema1
چهارشنبه 26 فروردین 1394, 16:21 عصر
سلام

این یه سری نقاطی هست که رسم کردم.

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 مقادیر عمودی.

سلام
از تابع interp1 استفاده کنید

coronaa
چهارشنبه 26 فروردین 1394, 17:48 عصر
ممنونم. یه چیز جدید یاد گرفتم :)

coronaa
جمعه 28 فروردین 1394, 18:06 عصر
سلام
من 10 تا فایل اکسل دارم که اعداد بصورت سطری هستن داخلش که میخوام همه رو با یه حلقه ی for بیارم توی متلب و سپس همه در یک آرایه و زیر هم قرار بگیرن. قسمت فراخوانی کدرو اینطوری نوشتم :

for i=1:10

p=xlsread('myfile (i).xlsx')

end

ولی i جایگزین نمیشه. با d% هم نشد. چطوریه؟

rahnema1
جمعه 28 فروردین 1394, 18:09 عصر
سلام
این صورت بویسید
p = xlsread(sprintf('myfile(%d).xlsx', i));

coronaa
جمعه 28 فروردین 1394, 18:45 عصر
سلام
این صورت بویسید
p = xlsread(sprintf('myfile(%d).xlsx', i));

حالا وقتی بخوام این فایل های فراخونی شده رو در یک آرایه قرار بدم چطوریه؟
من بصورت زیر نوشتم ولی خطا میده :

clc
P =[ ];
k=1;
for i=1:10

p(k) = xlsread(sprintf('myfile (%d).xlsx', i));

k=k+1;
end
P=p

rahnema1
جمعه 28 فروردین 1394, 18:52 عصر
p(k,:)= xlsread(sprintf('myfile (%d).xlsx', i));

coronaa
شنبه 29 فروردین 1394, 15:47 عصر
سلام

در مورد کامپایلری که گفتید رونصب کردم ولی میخوام به متلب معرفی کنم نمیشناسه و میگه باید 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/compilers/R2013a/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 بذارید تا دانلود کنم؟
یا یه راه حلی بدین.
تشکر

rahnema1
شنبه 29 فروردین 1394, 23:20 عصر
سلام
شاید ویژوال ++C را کامل نصب نکردید وگرنه فکر کنم sdk با اون نصب میشه
اینجا هم لینک sdk هست:
https://msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx
فکر کنم نصب آنلاین هست

coronaa
یک شنبه 30 فروردین 1394, 00:02 صبح
سلام
شاید ویژوال ++C را کامل نصب نکردید وگرنه فکر کنم sdk با اون نصب میشه
اینجا هم لینک sdk هست:
https://msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx
فکر کنم نصب آنلاین هست
نمیدونم!
من امروز sdk رو بصورت آنلاین داشتم نصب میکردم. دیدم اصلاً جلویی نمیره. قطعش کردم.
من واسه ویندوز 7 داشتم نصب میکردم.

rahnema1
یک شنبه 30 فروردین 1394, 00:25 صبح
داخل ویژوال استادیو باید sdk باشه یه بار دیگه کامل نصب کنید

coronaa
یک شنبه 30 فروردین 1394, 06:51 صبح
این لینکی که گذاشتم الآن توش sdk هست؟؟؟

----

جدا نمیشه پیدا کرد؟ این حجمش زیاده!

من این ++C رو نصب کرده بودم :

130426

rahnema1
یک شنبه 30 فروردین 1394, 07:43 صبح
این لینکی که گذاشتم الآن توش sdk هست؟؟؟

http://ariadl.com/2266-دانلود-نرم-افزار-مایکروسافت-ویژوال-استودیو-2012-کرک-شده.html

جدا نمیشه پیدا کرد؟ این حجمش زیاده!

من این ++C رو نصب کرده بودم :

130426

شما اصلا ویژوال سی پلاس پلاس نصب نکردید!
این نسخه رایگان برنامه به همراه sdk و بدون کرک و ویروس هست حدود 600 مگ
http://www.microsoft.com/en-us/download/details.aspx?id=34673
اگه نمیشه دانلود کرد هر جا برید میتونید سی دی برنامه را گیر بیارید

coronaa
یک شنبه 30 فروردین 1394, 12:30 عصر
شما اصلا ویژوال سی پلاس پلاس نصب نکردید!
این نسخه رایگان برنامه به همراه sdk و بدون کرک و ویروس هست حدود 600 مگ
http://www.microsoft.com/en-us/download/details.aspx?id=34673
اگه نمیشه دانلود کرد هر جا برید میتونید سی دی برنامه را گیر بیارید

نصبش کردم. فولدر sdk ساخته شد ولی داخلش خالیه!
و متلب همچنان میگه sdk وجود نداره.

130433

rahnema1
یک شنبه 30 فروردین 1394, 13:47 عصر
در سایت زیر
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 نصب بشه

coronaa
یک شنبه 30 فروردین 1394, 14:37 عصر
در سایت زیر
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 نصب بشه

سیستمی که دارم روش کار میکنم وینوز 7 نصبه. نکنه اونی هم که دانلود کردم واسه ویندوز 8 بود!؟؟

rahnema1
یک شنبه 30 فروردین 1394, 15:03 عصر
اشکال نداره sdk8 برای ویندوز 7 هم کار می کنه

coronaa
یک شنبه 30 فروردین 1394, 16:41 عصر
اشکال نداره sdk8 برای ویندوز 7 هم کار می کنه
دستت درد نکنه. خیلی زحمت کشیدی مهندس.
حجم کلیش حدوداً چقدر میشه؟ جایی نوشته نیست؟

rahnema1
یک شنبه 30 فروردین 1394, 16:57 عصر
فکر کنم 300 مگ

coronaa
چهارشنبه 09 اردیبهشت 1394, 18:48 عصر
سلام

میدونید برای رسم این نوع تصویر از چه دستوری باید استفاده کنم؟
با plot3 که اینطوری طبقه طبقه در نمیاد! دستور خاصی داره؟؟؟



130749

rahnema1
چهارشنبه 09 اردیبهشت 1394, 20:36 عصر
سلام، داده های شما به چه صورت هست؟

coronaa
چهارشنبه 09 اردیبهشت 1394, 21:31 عصر
سلام، داده های شما به چه صورت هست؟

چطوری نشون بدم؟
مثلاً سه تا پارامتر دارم که هر کدوم 11000 تا عدد هستن بین 0 تا 100

یکیش رو پلات کردم :
130752

rahnema1
پنج شنبه 10 اردیبهشت 1394, 08:49 صبح
شما لازمه ابتدا تولباکس geom3d را از این سایت دریافت کنید:
www.mathworks.com/matlabcentral/fileexchange/24484-geom3d
این تابع برای ترسیم استفاده کنید:

function plotSlices(NODES, level)
FACES = minConvexHull(NODES);
figure, hold on;
for i = level
PLANE = createPlane([0 0 i],[0 1 i], [ 1 1 i]) ;
SLICE = polyhedronSlice(NODES, FACES, PLANE);
fillPolygon3d(SLICE);
end
end

این هم نحوه استفاده

NODES = randn(50, 3);
plotSlices(NODES, (-1:1))

NODES که نقاط شماست و level هم که ارتفاع سطوحی هست که می خواد رسم بشه

coronaa
جمعه 11 اردیبهشت 1394, 15:25 عصر
سلام
دستت درد نکنه. نصبش کردم.
کد شما رو هم اجرا کردم ولی چرا سه بعدی نشون نمیده؟؟؟


130792

rahnema1
جمعه 11 اردیبهشت 1394, 21:20 عصر
سلام
دستت درد نکنه. نصبش کردم.
کد شما رو هم اجرا کردم ولی چرا سه بعدی نشون نمیده؟؟؟


130792

خب توی متلب ابزار برای چرخش نمودار باید باشه از توی منوها پیدا کنید وقتی با ماوس روی تصویر می کشید باید بچرخه من توی اکتاو به راحتی شکل را به صورت سه بعدی می چرخونم

coronaa
جمعه 11 اردیبهشت 1394, 21:36 عصر
باشه امتحان میکنم.
فعلن شبیه سازیم در حال اجراست که حدود 18 ساعت طول میکشه :)
بعد از اون تستش میکنم.
بازم ممنونم.

coronaa
شنبه 12 اردیبهشت 1394, 23:15 عصر
سلام
آقا من کد رو با داده های خودم اجرا کردم ولی خطا میده.
من سه پارامتر Kp1 , Ki1 , Kd1 دارم که هر کدوم 10857 نقطه دارند و همچنین همه بین 0 تا 100 رنجشون هست. به صورت زیر نوشتم :

load Data_Conventional

Kp1 = kp1co;
Ki1 = ki1co;
Kd1 = kd1co;

NODES = [Kp1 Ki1 Kd1];
plotSlices(NODES, (0:100))

با داده های شما اجرامیکنم پلات میکنه. ولی با داده های خودم نه. خطاش به این صورته :

??? Attempted to access px(1); index out of bounds because numel(px)=0.

Error in ==> fillPolygon3d at 71
px = [px; px(1)];

Error in ==> plotSlices at 7
fillPolygon3d(SLICE);

Error in ==> plottt3d at 10
plotSlices(NODES, (0:100))

rahnema1
یک شنبه 13 اردیبهشت 1394, 20:43 عصر
نمیدونم دقیقا مشکل کجاست ولی سعی کنید تعداد level ها را کم کنید مثلا
10:10:90

coronaa
یک شنبه 13 اردیبهشت 1394, 22:33 عصر
تعداد level چه تاثیری داره و اون عکس اصلی که گذاشتم اصلن چطوری میشه فهمید که اعدا kp , ki , kd نهایتن به چه عددی ختم شد؟
چون با گذشت زمان این سه تا پارامتر هر کدوم به سمت یک عدد ثابتی میل می کنن.

rahnema1
یک شنبه 13 اردیبهشت 1394, 22:42 عصر
تعداد level چه تاثیری داره و اون عکس اصلی که گذاشتم اصلن چطوری میشه فهمید که اعدا kp , ki , kd نهایتن به چه عددی ختم شد؟
چون با گذشت زمان این سه تا پارامتر هر کدوم به سمت یک عدد ثابتی میل می کنن.

از minو max می تونید بفهمید محدوده این متغیرها چی هستند
این دستور هم خوبه:

FACES = minConvexHull(NODES);
drawMesh(NODES,FACES)

coronaa
دوشنبه 14 اردیبهشت 1394, 22:10 عصر
از minو max می تونید بفهمید محدوده این متغیرها چی هستند
منظورم از روی نمودار بود!


این دستور هم خوبه:


FACES = minConvexHull(NODES);
drawMesh(NODES,FACES)


این شکلش بصورت زیر شد ولی خب از روی نمودار چطوری میشه فهمید پارامتراش از چند به چند رفتن؟؟؟


130880


میشه شما هم نموداری که با اوکتاو پلات میکنید رو نشون بدین؟ (با دستور اولی)

rahnema1
دوشنبه 14 اردیبهشت 1394, 23:03 عصر
توی اکتاو تابع fillPolygon3d کار نمی کنه و مجبورم به جای اون از drawPolygon3d استفاده کنم که چندضلعی تو خالی ایجاد میشه
اولی شکل سه بعدی
دومی پولیگونهای چند طبقه
و سومی ترکیب اون دو تا
http://www.sharefile.ir/uploads/1430785334.png
http://www.sharefile.ir/uploads/1430821213.png
http://www.sharefile.ir/uploads/1430816215.png

از شکل این جور متوجه میشم که داده های شما outlier داره بهتره نقاط را به این صورت پلات کنید
plot3(NODES(:,1),NODES(:,2),NODES(:,3),'*')
که همچین شکلی ایجاد می شه:
http://www.sharefile.ir/uploads/1430829270.png

coronaa
دوشنبه 14 اردیبهشت 1394, 23:48 عصر
داده های من outlier نداره. همونیه که توی پست 104 گذاشتم.
ضمن اینکه من اصلن این شکل ها رو نمیخواستم. همونی که توی پست 102 گذاشتم رو میخواستم. ولی شکل دوم شما یکمی شبیه هست. اگه نمیشه که دیگه بیخیال شید تا وقت شما هم گرفته نشه.

rahnema1
سه شنبه 15 اردیبهشت 1394, 14:26 عصر
الان من نمیدونم مشکل چیه با مثال و شکل هم برای شما گذاشتم اگه تو متلب جواب نمیده تقصیر من نیست

coronaa
چهارشنبه 16 اردیبهشت 1394, 09:01 صبح
سلام
مهندس اینو میشه توی اکتاو اجرا کنید؟
توی متلب که خطا میده.

Kp1 =0:60 ;
Ki1 =0:200 ;
Kd1 =0:1000 ;

NODES = [Kp1 Ki1 Kd1];
figure
plotSlices(NODES, 9 )

rahnema1
چهارشنبه 16 اردیبهشت 1394, 20:07 عصر
اینجور که نمیشه آرایه درست کرد باید سه تا ستون هم اندازه داشته باشه
اون پست قبلی را که گفتم با try انجام بدید اگه ارور داد از ارور صرفنظر کنه

NODES = randn(50, 3);
try
plotSlices(NODES, (-1:1))
catch
end

coronaa
پنج شنبه 17 اردیبهشت 1394, 10:19 صبح
اینجور که نمیشه آرایه درست کرد باید سه تا ستون هم اندازه داشته باشه

اون پست قبلی را که گفتم با try انجام بدید اگه ارور داد از ارور صرفنظر کنه

NODES = randn(50, 3);
try
plotSlices(NODES, (-1:1))
catch
end

اون برنامه قبلی شما که اجرا میشه. عکسش رو توی پست 106 گذاشته بودم.
من مشکلم اینه که چرا با داده های خودم پلات نمیشه. داده ها رو بصورت ستونی درست کردم و هم اندازه هم هستن :

Kp =linspace(0,60,50)';
Ki =linspace(0,200,50)';
Kd =linspace(0,1000,50)';
% -----------------

NODES = [Kp Ki Kd];
plotSlices(NODES,(-1:1))

rahnema1
پنج شنبه 17 اردیبهشت 1394, 13:12 عصر
اون برنامه قبلی شما که اجرا میشه. عکسش رو توی پست 106 گذاشته بودم.
من مشکلم اینه که چرا با داده های خودم پلات نمیشه. داده ها رو بصورت ستونی درست کردم و هم اندازه هم هستن :

Kp =linspace(0,60,50)';
Ki =linspace(0,200,50)';
Kd =linspace(0,1000,50)';
% -----------------

NODES = [Kp Ki Kd];
plotSlices(NODES,(-1:1))

آخه این که مختصات یک خط سه بعدیه نه یک حجم سه بعدی! باز هم دوباره میگم اگه شما با داده های اصلی که دارید کار می کنید از try استفاده کنید دیگه ارور نمیده

coronaa
پنج شنبه 17 اردیبهشت 1394, 15:10 عصر
آخه این که مختصات یک خط سه بعدیه نه یک حجم سه بعدی! باز هم دوباره میگم اگه شما با داده های اصلی که دارید کار می کنید از try استفاده کنید دیگه ارور نمیده
داده های من همین چیزی هست که گذاشتم. با try خطا نمیده ولی چیزی هم پلات نمیکنه!

Kp =linspace(0,60,50)';
Ki =linspace(0,200,50)';
Kd =linspace(0,1000,50)';
% -----------------

NODES = [Kp Ki Kd];
try
plotSlices(NODES,(-1:1))
catch
end

شما داده ها رو یکدفعه تولید کردین ولی من جدا جدا داشتم و پیش هم گذاشتم. چه فرقی میکنه؟
من تصویر اصلی رو هم از اینجا (http://www.sharefile.ir/uploads/1431071149.pdf) گرفتم.

rahnema1
پنج شنبه 17 اردیبهشت 1394, 20:07 عصر
مگه نگفتید یکی از پارامترها به این صورته؟
http://barnamenevis.org/attachment.php?attachmentid=130752&d=1430328678
یه کم دارم گیج می شم

coronaa
پنج شنبه 17 اردیبهشت 1394, 20:25 عصر
مگه نگفتید یکی از پارامترها به این صورته؟
http://barnamenevis.org/attachment.php?attachmentid=130752&d=1430328678
یه کم دارم گیج می شم
درسته ولی من فکر کنم مقاله اومد فقط رنج پارامترها رو بصورت نموداری نشون داد. دیگه نیومد نقطه به نقطه رو پلات کنه!
همون قسمتی که های لایت کردم. منم میخوام بگم رنج این سه تا پارامتر در این محدوده هست و پلات بشه. مگه اون نمودار اصلی اینو نشون نمیده؟

rahnema1
پنج شنبه 17 اردیبهشت 1394, 20:33 عصر
شما بالاخره تونستید پلات را به صورت سه بعدی بچرخونید؟
چرا این که میگم انجام نمیدید؟ لطفا با try اون سه تا پارامتر را با تابع plotSlices که سطوح اون 10:10:90 باشه پلات کنید. خواهشا
با drawMesh هم پلات کنید و بچرخونید و تصویر سه بعدی را اینجا بذارید

coronaa
پنج شنبه 17 اردیبهشت 1394, 21:40 عصر
منظورت کدوم پارامترها بود؟
من با این داده ها انجام دادم :
clc; clear; close all;

Kp =linspace(0,60,50)';
Ki =linspace(0,200,50)';
Kd =linspace(0,1000,50)';

NODES = [Kp Ki Kd];

try
plotSlices(NODES, (10:10:90))
catch
end
% -------------------------------
figure
FACES = minConvexHull(NODES);
try
drawMesh(NODES,FACES)
catch
end

خطای زیر رو داد :
??? Error using ==> qhullmx
qhull precision error: initial facet 3 is coplanar with the interior point

ERRONEOUS FACET:


While executing: | qhull Qt

Options selected for Qhull 2003.1 2003/12/30:
Qtriangulate _pre-merge _zero-centrum _max-width 1e+003
Error-roundoff 1.1e-012 _one-merge 7.5e-012 _near-inside 3.7e-011
Visible-distance 2.1e-012 U-coplanar-distance 2.1e-012
Width-outside 4.3e-012 _wide-facet 1.3e-011


The input to qhull appears to be less than 3 dimensional, or a
computation has overflowed.

Qhull could not construct a clearly convex simplex from points:


The center point is coplanar with a facet, or a vertex is coplanar
with a neighboring facet. The maximum round off error for
computing distances is 1.1e-012. The center point, facets and distances
to the center point are as follows:




facet
p42
p49
p0
distance= -7.1e-015

facet
p9
p49
p0
distance= -7.1e-015

facet
p9
p42
p0
distance= 0

facet
p9
p42
p49
distance= -1.4e-014


These points either have a maximum or minimum x-coordinate, or
they maximize the determinant for k coordinates. Trial points
are first selected from points that maximize a coordinate.


The min and max coordinates for each dimension are:

0: 0 60 difference= 60

1: 0 200 difference= 200

2: 0 1000 difference= 1000


If the input should be full dimensional, you have several options that
may determine an initial simplex:
- use 'QJ' to joggle the input and make it full dimensional
- use 'QbB' to scale the points to the unit cube
- use 'QR0' to randomly rotate the input for different maximum points
- use 'Qs' to search all points for the initial simplex
- use 'En' to specify a maximum roundoff error less than 1.1e-012.
- trace execution with 'T3' to see the determinant for each point.

If the input is lower dimensional:
- use 'QJ' to joggle the input and make it full dimensional
- use 'Qbk:0Bk:0' to delete coordinate k from the input. You should
pick the coordinate with the least range. The hull will have the
correct topology.
- determine the flat containing the points, rotate the points
into a coordinate plane, and delete the other coordinates.
- add one or more points to make the input full dimensional.



Error in ==> convhulln at 71
[k,vv] = qhullmx(x', opt);

Error in ==> minConvexHull at 44
hull = convhulln(nodes);

Error in ==> plot4 at 15
FACES = minConvexHull(NODES);

coronaa
پنج شنبه 17 اردیبهشت 1394, 21:44 عصر
به اینصورت اجرا کردم :

clc; clear; close all;

NODES = randn(50,3);

try
plotSlices(NODES, (10:10:90))
catch
end
% -------------------------------
figure
FACES = minConvexHull(NODES);
try
drawMesh(NODES,FACES)
catch
end

که دستور اولی رو پلات نکرد (خطایی هم نداد) و دستور دومی رو بصورت زیر پلات کرد :


130989

coronaa
پنج شنبه 17 اردیبهشت 1394, 21:47 عصر
به این صورت که انجام دادم :

clc; clear; close all;

NODES = randn(50,3);

plotSlices(NODES, (-1:1))
% -------------------------------
figure
FACES = minConvexHull(NODES);
try
drawMesh(NODES,FACES)
catch
end

هر دو رو پلات کرد ولی level اون چیزی که خواستین نیست. با اون level خطا میده که توی پست قبلی انجام دادم.


130990

130991

coronaa
پنج شنبه 17 اردیبهشت 1394, 21:52 عصر
من میخوام با این رنج های زیر نموداری مثل مقاله رسم بشه :

Kp =linspace(0,60,50)';
Ki =linspace(0,200,50)';
Kd =linspace(0,1000,50)';

میشه؟؟؟

level رو میشه هر طوری انتخاب کرد؟

rahnema1
جمعه 18 اردیبهشت 1394, 09:33 صبح
همه چیز را ترسیم کردید به جز اون چیزی که باید ترسیم کنید :)
از linspace استفاده نکنید
سه تا بردار دارید که یکی از اونها به این شکل هست:
http://barnamenevis.org/attachment.php?attachmentid=130752&d=1430328678
اون سه تا را به عنوان سه ستون NODES در نظر بگیرید و با plotSlices و drawMesh ترسیم کنید و بچرخونید و حتما از try هم استفاده کنید

coronaa
جمعه 18 اردیبهشت 1394, 15:03 عصر
مگه توی اون تصویر اصلی نیومد فقط رنج پارامترها رو نشون بده؟ فکر نکنم اومده باشه که نقاط بین این دو رنج رو هم پلات کرده باشه!
به هر حال من همون چیزی که گفتید رو قرار دادم.
clc; clear; close all

load Data_Conventional

Kp =kd1co;
Ki =kp1co;
Kd =ki1co;
% -----------------

NODES = [Kp Ki Kd];
try
plotSlices(NODES,(-1:1))
catch
end

figure
FACES = minConvexHull(NODES);
try
drawMesh(NODES,FACES)
catch
end

قسمت اولی رو پلات نمیکنه ولی قسمت دومی بصورت زیر شد :


131006

coronaa
جمعه 18 اردیبهشت 1394, 15:07 عصر
مهندس ببخشید من هنوز نتونستم کامپایلر رو نصب کنم. یعنی sdk که گفته بودی رو هم دانلود کردم ولی وسط راه یه پیغامی میده به این صورت :
ضاهراً یه فایل وجود نداره. درسته؟


131009


131008

rahnema1
جمعه 18 اردیبهشت 1394, 15:10 عصر
اون -1:1 برای اون مثال دیگه بود واسه داده های خودتون اینجور بذارید

plotSlices(NODES,(5:5:50))

واسه نصب هم گزینه دوم را انتخاب کنیدو مسیر فولدر sdk را معرفی کنید

coronaa
جمعه 18 اردیبهشت 1394, 15:32 عصر
اون -1:1 برای اون مثال دیگه بود واسه داده های خودتون اینجور بذارید
2 plotSlices(NODES,(5:5:50))

انجام دادم. اتفاق خاصی نیوفتاد!
من داده ها رو توی اکسل ذخیره کنم و اینجا آپ کنم میتونید خودتون با اکتاو بررسی کنید؟


واسه نصب هم گزینه دوم را انتخاب کنیدو مسیر فولدر sdk را معرفی کنید
تصویر دومی که گذاشتم واسه همین بود. وقتی از مسیر کامپیوتر فراخونی میکنم خطای تصویر دوم رو میده.

rahnema1
جمعه 18 اردیبهشت 1394, 15:42 عصر
ظاهرا دانلود نکردید لینکش داخل همون فایل
Win8.1SDKFiles.txt هست
http://download.microsoft.com/download/F/1/3/F1300C9C-A120-4341-90DF-8A52509B23AC/standalonesdk/Patches/8.59.29750/Windows Software Development Kit-x86_en-us.msp

rahnema1
جمعه 18 اردیبهشت 1394, 15:42 عصر
داده ها را بفرستید

coronaa
جمعه 18 اردیبهشت 1394, 15:57 عصر
داده ها را بفرستید

http://www.sharefile.ir/uploads/1431184856.xlsx

تشکر

rahnema1
جمعه 18 اردیبهشت 1394, 16:42 عصر
http://www.sharefile.ir/uploads/1431184856.xlsx

تشکر

شما level را به صورت 22:3:47 وارد کنید نشون میده

coronaa
جمعه 18 اردیبهشت 1394, 16:47 عصر
درست شد.
ولی خب دلیلش چیه که level رو این اعداد انتخاب کردین و بر چه اساسی؟
دوم اینکه از روی نمودار حالا چطوری میشه فهمید که Kp به سمت چه عددی میل کرد؟


131010

rahnema1
جمعه 18 اردیبهشت 1394, 17:11 عصر
گفتم که از min و max استفاده کنید تا محدوده متغیر ها را متوجه بشید از روی نمودار mesh یا نمودار نقطه ای هم میشد فهمید محدوده اونها چه قدره
اینکه kp به سمت چه عددی میل کرده نمیدونم از روی نمودار که مشخصه

coronaa
جمعه 18 اردیبهشت 1394, 17:22 عصر
گفتم که از min و max استفاده کنید تا محدوده متغیر ها را متوجه بشید از روی نمودار mesh یا نمودار نقطه ای هم میشد فهمید محدوده اونها چه قدره
اینکه kp به سمت چه عددی میل کرده نمیدونم از روی نمودار که مشخصه

ممنونم.
من منظورم چیز دیگه ای بود. فرص کنید کدی در دسترس نیست و خواننده میواد از روی نمدار متوجه بشه که رنجشون چیه!
مثل همون چیزی که توی مقاله هست. پس اصلن واسه چی این نمودار رو رسم کرده بود؟
بازم دستتون درد نکنه. خیلی زحمت کشیدین.

coronaa
شنبه 19 اردیبهشت 1394, 16:30 عصر
سلام
مهندس ببخشید. اون لینکی که واسه sdk گذاشته بودین رو دانلود کردم و توی فولدر مربوطه قرار دادم ولی همچنان همون خطا رو میده!
من فایلهایی که دانلود کردم به صورت زیره :
131045


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


131046

rahnema1
شنبه 19 اردیبهشت 1394, 18:34 عصر
نمیدونم مشکل کجاست. اگه بتونید توی تنظیمات folder option در ویندوز گزینه نشون دادن extension ها رافعال کنید تا مشخص بشه پسوند فایل exe هست یا msu
من خودم تا به حال این را نصب نکردم توی اون سایت لینکش را دیدم گفتم شاید به درد شما بخوره حالا اگه تو نصبش مشکل دارید فکر کنم بهتره یه عدد dvd ویژوال استادیو کامل البته همون نسخه ای که می خواهید فکر کنم 2012 بود را یه جا پیدا کنید که این سی دی ها همه جا ریخته و فراوان هست

coronaa
جمعه 25 اردیبهشت 1394, 10:59 صبح
نمیدونم مشکل کجاست. اگه بتونید توی تنظیمات folder option در ویندوز گزینه نشون دادن extension ها رافعال کنید تا مشخص بشه پسوند فایل exe هست یا msu
من خودم تا به حال این را نصب نکردم توی اون سایت لینکش را دیدم گفتم شاید به درد شما بخوره حالا اگه تو نصبش مشکل دارید فکر کنم بهتره یه عدد dvd ویژوال استادیو کامل البته همون نسخه ای که می خواهید فکر کنم 2012 بود را یه جا پیدا کنید که این سی دی ها همه جا ریخته و فراوان هست

سلام مهندس عزیز
بالاخره پس از روزها تلاش و کوشش تونستم بر طرف کنم. یه ++c دیگه پیدا کردم و نصب کردم که جواب داد خدا رو شکر.
دست شما هم درد نکنه
:)

coronaa
جمعه 29 خرداد 1394, 21:23 عصر
سلام آقای مهندس. وقت شما بخیر.
ببخشید یه مشکل دیگه داشتم. من فرمول زیر رو میخوام کد بزنم و پلات کنم :

132410

بصورت زیر نوشتم ولی توی لحظه ی صفر خطا میگیره :

clc; close all;

tic
Time=linspace(1,10,250000);
P=rand(1,250000);
soc=zeros(1,250000);
soc(0)=100;
for i=1:length(Time)
soc(i)=(soc(i-1)+(P(i)*(Time(i)-Time(i-1))))/100;
end
socc=soc';
plot(Time,socc);
toc

خطا :

??? Attempted to access soc(0); index must be a positive integer or
logical.

Error in ==> Soc at 7
soc(0)=100;

rahnema1
جمعه 29 خرداد 1394, 21:38 عصر
سلام
این را امتحان کنید

soc(2:end) = (soc(1:(end -1)) + P(2:end) .*deta(2:end)) * 0.01;
soc = cumsum(soc);

coronaa
جمعه 29 خرداد 1394, 22:15 عصر
deta الآن چیه؟
البته من از لحظه ی اول میخوام. وگرنه از لحظه ی دوم رو بدست میارم. وقتی که بصورت زیر باشه :


soc(1)=100;
for i=2:length(Time)
soc(i)=(soc(i-1)+(P(i)*(Time(i)-Time(i-1))))/100;
end

rahnema1
جمعه 29 خرداد 1394, 22:19 عصر
deta الآن چیه؟

تو همون فرمول دلتا داریم دیگه بر اساس همون عکس فرمول که گذاشتید من نوشتم

coronaa
جمعه 29 خرداد 1394, 22:22 عصر
تو همون فرمول دلتا داریم دیگه بر اساس همون عکس فرمول که گذاشتید من نوشتم
درسته ولی دلتا رو که شما تعریف نکردین!
مگه متلب این عبارت رو میشناسه؟

coronaa
جمعه 29 خرداد 1394, 22:30 عصر
سلام
این را امتحان کنید

soc(2:end) = (soc(1:(end -1)) + P(2:end) .*deta(2:end)) * 0.01;
soc = cumsum(soc);

من اصلن متوجه نشدم که شما سمت چپ معادله رو چرا برداری نوشتین؟؟ ما که از همون اول مقادیر soc رو نداریم!
این رابطه بازگشتیه و باید با مقدار فبل خودش حساب بشه.

rahnema1
جمعه 29 خرداد 1394, 22:30 عصر
این را امتحان کنید

P = rand(1,250000);
soc=zeros(1,250000);
soc(1) = 100;
delta = diff(1:250000);
soc(2:end) = (soc(1:(end -1)) + P(2:end) .* delta) * 0.01;
soc = cumsum(soc);

coronaa
جمعه 29 خرداد 1394, 23:01 عصر
این را امتحان کنید

P = rand(1,250000);
soc=zeros(1,250000);
soc(1) = 100;
delta = diff(1:250000);
soc(2:end) = (soc(1:(end -1)) + P(2:end) .* delta) * 0.01;
soc = cumsum(soc);

مرسی. همونی شد که توی پست 146 گذاشتم.

coronaa
جمعه 05 تیر 1394, 10:50 صبح
سلام مهندس
وقتت بخیر.
ببخشید من یه حلقه دارم که هفت بار اجرا میشه و در هر مرحله (سطر) تعداد ستون های متفاوتی داره. بصورت تصویر زیر.
من چطوری باید سلولش رو تعریف کنم؟ باید یه سلول 7 در 3 بشه. چون نهایتن تعداد ستونها به 3 میرسه.
البته جای اون حروفها اعداد قرار میگیره.

132605

rahnema1
جمعه 05 تیر 1394, 11:35 صبح
سلام
درست متوجه نشدم ولی مثلا در این مثال x چیزی هست که قراره در هر سطر جا داده بشه

jadval = {};
for i = 1 : 7
jadval{i} = x;
end

coronaa
جمعه 05 تیر 1394, 15:55 عصر
برنامه ی من 7 بار با حلقه for اجرا میشه.
در حلقه اول، یه مقدار وجود داره که در سطر اول و ستون اول قرار میگیره. یعنی در سلول a
در حلقه دوم و سوم هم همینطور جای b و c قرار میگیرن.
در حلقه چهارم، دو مقدار بدست میاد که در سطر چهارم و ستونهای اول و سوم قرار میگیرن. یعنی جای d , e
...
درحلقه هفتم، برای x سه مقدار داریم. یعنی یک بردار سه 1 در سه هست، که در سطر 7 و ستون یک تا سه قرار میگیره.
اینو چطوری باید توی یک سلول و یا آرایه ذخیره کنم؟
آرایه باشه بهتره. منظورم بصورت ماتریسی هست.

rahnema1
جمعه 05 تیر 1394, 16:04 عصر
خب یک آرایه خالی به همین ابعاد 7 در 3 ایجاد کنید و در حلقه مقدار دهی کنید . الان من درست متوجه نمیشم

coronaa
جمعه 05 تیر 1394, 16:20 عصر
میخوام مقدار offer توی یک آرایه قرار بگیره. مثل شکلی که قرار دادم :


alpha0=[.4,.52,.6];
beta0=[1.2 1.2 1.2];
lambda=1;
D0=[5.3,3.6,1.3];
m0=[1,1,1];
k=.38;

% % -----------------------------
n=[1 2 3];
for i=1:numel(n)
S{i}=nchoosek(n,i);
end
% % -----------------------------
Coalition=1;
profit=[];
jadval = zeros(7,3);
for i=1:numel(S)
for j=1:size(S{i},1)
alpha=[];
beta=[];

for kk=1:size(S{i},2)
alpha=[alpha ones(1,m0(S{i}(j,kk))).*alpha0(S{i}(j,kk))];
end
for kk=1:size(S{i},2)
beta=[beta ones(1,m0(S{i}(j,kk))).*beta0(S{i}(j,kk))];
end
m=sum(m0(S{i}(j,:)));
D=sum(D0(S{i}(j,:)));
fun_MG0 = @(q,alpha,beta,k,D) -sum((2*alpha.*q+beta + k .*(D-sum(q))).*q -alpha.*(q).^2-beta.*q);
fun_MG = @(q) fun_MG0(q,alpha,beta,k,D) ;
lb=zeros(1,m); % LowerBound
ub=ones(1,m); % UpperBound
[x1, fx1]=fmincon(fun_MG,ones(1,m)*.99,[],[],[],[],lb,ub);
profit(Coalition)=(-fx1);
Coalition = Coalition + 1;
fprintf('\n Emount of Energy :\n');
disp(x1);
fprintf('\n---------------------------------------\n');
fprintf('\nOffer Without Saticfiction Function :\n');
disp(2*alpha.*x1+ beta);
fprintf('\n---------------------------------------\n');
fprintf('\nOffer With Saticfiction Function :\n');
offerr=2*alpha.*x1+ beta + k .*(D- sum(x1));
disp(2*alpha.*x1+ beta + k .*(D- sum(x1)));
fprintf('\n---------------------------------------\n');

end
end

rahnema1
جمعه 05 تیر 1394, 16:51 عصر
فکر کنم اینجور بذارید درست می شه
offer{i}(j) = 2*alpha.*x1+ beta + k .*(D- sum(x1));

coronaa
جمعه 05 تیر 1394, 17:55 عصر
??? Subscripted assignment dimension mismatch.

Error in ==> bbbbbbbb at 46
offer{i}(j) = 2*alpha.*x1+ beta + k .*(D- sum(x1));

rahnema1
جمعه 05 تیر 1394, 18:23 عصر
این یکی

alpha0=[.4,.52,.6];
beta0=[1.2 1.2 1.2];
lambda=1;
D0=[5.3,3.6,1.3];
m0=[1,1,1];
k=.38;

% % -----------------------------
n=[1 2 3];
for i=1:numel(n)
S{i}=nchoosek(n,i);
end
% % -----------------------------
Coalition=1;
profit=[];
jadval = zeros(7,3);
offer={};
for i=1:numel(S)
offerr_array=[];
for j=1:size(S{i},1)
alpha=[];
beta=[];

for kk=1:size(S{i},2)
alpha=[alpha ones(1,m0(S{i}(j,kk))).*alpha0(S{i}(j,kk))];
end
for kk=1:size(S{i},2)
beta=[beta ones(1,m0(S{i}(j,kk))).*beta0(S{i}(j,kk))];
end
m=sum(m0(S{i}(j,:)));
D=sum(D0(S{i}(j,:)));
fun_MG0 = @(q,alpha,beta,k,D) -sum((2*alpha.*q+beta + k .*(D-sum(q))).*q -alpha.*(q).^2-beta.*q);
fun_MG = @(q) fun_MG0(q,alpha,beta,k,D) ;
lb=zeros(1,m); % LowerBound
ub=ones(1,m); % UpperBound
[x1, fx1]=fmincon(fun_MG,ones(1,m)*.99,[],[],[],[],lb,ub);
profit(Coalition)=(-fx1);
Coalition = Coalition + 1;
fprintf('\n Emount of Energy :\n');
disp(x1);
fprintf('\n---------------------------------------\n');
fprintf('\nOffer Without Saticfiction Function :\n');
disp(2*alpha.*x1+ beta);
fprintf('\n---------------------------------------\n');
fprintf('\nOffer With Saticfiction Function :\n');
offerr_array(j)=2*alpha.*x1+ beta + k .*(D- sum(x1));
disp(2*alpha.*x1+ beta + k .*(D- sum(x1)));
fprintf('\n---------------------------------------\n');

end
offer{i} = offerr_array;
end

coronaa
جمعه 05 تیر 1394, 19:21 عصر
??? In an assignment A(I) = B, the number of elements in B and
I must be the same.

Error in ==> aaaaaaaaaaaaa at 46
offerr_array(j)=2*alpha.*x1+ beta + k .*(D- sum(x1));

rahnema1
جمعه 05 تیر 1394, 21:24 عصر
این یکی دیگه فکر کنم مشکل ایجاد نکنه

alpha0=[.4,.52,.6];
beta0=[1.2 1.2 1.2];
lambda=1;
D0=[5.3,3.6,1.3];
m0=[1,1,1];
k=.38;

% % -----------------------------
n=[1 2 3];
for i=1:numel(n)
S{i}=nchoosek(n,i);
end
% % -----------------------------
Coalition=1;
profit=[];
jadval = zeros(7,3);
offer={};
for i=1:numel(S)
offer_cell={};
for j=1:size(S{i},1)
alpha=[];
beta=[];

for kk=1:size(S{i},2)
alpha=[alpha ones(1,m0(S{i}(j,kk))).*alpha0(S{i}(j,kk))];
end
for kk=1:size(S{i},2)
beta=[beta ones(1,m0(S{i}(j,kk))).*beta0(S{i}(j,kk))];
end
m=sum(m0(S{i}(j,:)));
D=sum(D0(S{i}(j,:)));
fun_MG0 = @(q,alpha,beta,k,D) -sum((2*alpha.*q+beta + k .*(D-sum(q))).*q -alpha.*(q).^2-beta.*q);
fun_MG = @(q) fun_MG0(q,alpha,beta,k,D) ;
lb=zeros(1,m); % LowerBound
ub=ones(1,m); % UpperBound
[x1, fx1]=fmincon(fun_MG,ones(1,m)*.99,[],[],[],[],lb,ub);
profit(Coalition)=(-fx1);
Coalition = Coalition + 1;
fprintf('\n Emount of Energy :\n');
disp(x1);
fprintf('\n---------------------------------------\n');
fprintf('\nOffer Without Saticfiction Function :\n');
disp(2*alpha.*x1+ beta);
fprintf('\n---------------------------------------\n');
fprintf('\nOffer With Saticfiction Function :\n');
offer_cell{j}=2*alpha.*x1+ beta + k .*(D- sum(x1));
disp(2*alpha.*x1+ beta + k .*(D- sum(x1)));
fprintf('\n---------------------------------------\n');

end
offer{i} = offer_cell;
end

coronaa
جمعه 05 تیر 1394, 21:38 عصر
ممنونم. درست شد ولی سلولهای تو در تو شد.
یکمی فراخونی کردنش سخت شد.
نمیشه همه در یک آرایه قرار بگیرن؟ من دقیقاً مثل همون شکل میخوام.

rahnema1
جمعه 05 تیر 1394, 21:46 عصر
ظاهرا سایز این offer ها مختلفه که نمیشه داخل آرایه قرار بگیره

coronaa
جمعه 05 تیر 1394, 21:52 عصر
خب نمیشه خونه هایی که خالی هست تهی یا صفر باشه؟
من ادامه برنامه کد پایین رو گذاشتم ولی نمیدونم بجای xxx چی باید بذارم؟


m = zeros(7, 3);
for i=1:7
for j=1:3
m(i,j) = xxx;
end
end

rahnema1
جمعه 05 تیر 1394, 22:03 عصر
الان من نمیدونم محتوای این سلول چیه و چند در چند هست اگه بتونید فقط offer را در فایل mat بذارید و بفرستید ببینم چه شکلی داره

coronaa
جمعه 05 تیر 1394, 22:23 عصر
الان من نمیدونم محتوای این سلول چیه و چند در چند هست اگه بتونید فقط offer را در فایل mat بذارید و بفرستید ببینم چه شکلی داره

http://www.sharefile.ir/uploads/1435354455.rar

rahnema1
جمعه 05 تیر 1394, 22:56 عصر
این را امتحان کنید

matcell = cell2mat(offer);
size_col = 0;
size_row = numel(matcell);
for i = 1: size_row
size_col = max(size_col , numel(matcell{i}));
end;
mat = zeros(size_row, size_col);
for i = 1: size_row
mat(i,1:numel(matcell{i})) = matcell{i};
end

coronaa
جمعه 05 تیر 1394, 22:58 عصر
??? Error using ==> cell2mat at 55
Cannot support cell arrays containing cell arrays or objects.

Error in ==> aaaaaaaaaaaaa at 53
matcell = cell2mat(offer);

rahnema1
جمعه 05 تیر 1394, 23:27 عصر
این یکی

size_col = 0;
size_row = 0;
for i= 1:numel(offer)
offeri = offer{i};
size_row = size_row + numel(offeri);
size_col = size_col + size(offeri, 2);
end
mat = zeros(size_row, size_col);
k = 1;
for i= 1:numel(offer)
offeri = offer{i};
for j = 1:numel(offeri)
mat(k, 1:numel(offeri{j})) = offeri{j};
k= k + 1;
end
end

coronaa
جمعه 05 تیر 1394, 23:31 عصر
طیب الله :)درست شد.

kebriya
سه شنبه 03 شهریور 1394, 19:48 عصر
clc;
clear all;
close all;

x=unifrnd(0,100,50,1);
y=unifrnd(0,100,50,1);
for i=1 : 50
if x(i)>40 && x(i)<60
plot(x(i),y(i),'ro')
hold on;
else
plot(x(i),y(i),'o')
end
end

coronaa
سه شنبه 03 شهریور 1394, 21:04 عصر
clc;
clear all;
close all;

x=unifrnd(0,100,50,1);
y=unifrnd(0,100,50,1);
for i=1 : 50
if x(i)>40 && x(i)<60
plot(x(i),y(i),'ro')
hold on;
else
plot(x(i),y(i),'o')
end
end
سلام.
ببخشید این جواب کدوم سواله؟؟؟
اینجا سوال زیاد مطرح شد!

coronaa
یک شنبه 05 مهر 1394, 21:15 عصر
سلام استاد عزیز!
ببخشید من یه فایلی توی اکسل دارم که میخوام ستون C و D رو پیش هم قرار بدم (بدون فاصله) و بعد توی فایل txt ذخیره کنم.
از سمت چپ، اول C قرار بگیره و بعد D.
یعنی بشه CD . بعبارتی یه عدد 25 رقمی بشه. ضمن اینکه توی هر ستون اگه اعداد کمتر از حالت پیش فرض هستن، قبلش صفر قرار بگیره.
میشه این کار رو با متلب انجام داد؟
فایل اکسل :
http://www.sharefile.ir/uploads/1443432750.xlsx

به این صورت :
http://www.sharefile.ir/uploads/1443454165.jpg

rahnema1
یک شنبه 05 مهر 1394, 21:43 عصر
سلام به شما استاد گرامی
توی خود اکسل هم می شه انجام داد
http://www.sharefile.ir/uploads/1443474459.xls

coronaa
یک شنبه 05 مهر 1394, 21:57 عصر
سلام به شما استاد گرامی
توی خود اکسل هم می شه انجام داد
http://www.sharefile.ir/uploads/1443474459.xls
ممنونم.
عالی بود. فکرشو نمیکردم اکسل این قابلیت رو داشته باشه!
طیب الله :)

coronaa
شنبه 09 آبان 1394, 19:21 عصر
سلام
فقط مقدار اول رو توی خروجی نشون میده.یعنی (P). ولی S رو نشون نمیده!

function [P , S]=func(r)

P = 2*r*pi;
S = r*r*pi;

fprintf('Mohit = %f & Masahat = %f\n\n',P,S);

end


clc;
clear;

r = input('\n Please Enter Radius : ');
func(r);

rahnema1
یک شنبه 10 آبان 1394, 08:50 صبح
سلام
فقط مقدار اول رو توی خروجی نشون میده.یعنی (P). ولی S رو نشون نمیده!

function [P , S]=func(r)

P = 2*r*pi;
S = r*r*pi;

fprintf('Mohit = %f & Masahat = %f\n\n',P,S);

end


clc;
clear;

r = input('\n Please Enter Radius : ');
func(r);

سلام
اگه می خواهید هر دو خروجی تابع را دریافت کنید به صورت زیر تابع func را فراخوانی کنید:

[mohit , masahat] = func(r)

coronaa
شنبه 14 آذر 1394, 22:03 عصر
سلام
من یه چند جمله ای دارم که درجه جملاتش مرتب نیست. با چه دستوری میتونم از بزرگ به کوچیک مرتبش کنم؟

rahnema1
یک شنبه 15 آذر 1394, 19:22 عصر
سلام
من یه چند جمله ای دارم که درجه جملاتش مرتب نیست. با چه دستوری میتونم از بزرگ به کوچیک مرتبش کنم؟

سلام
با استفاده از تابع sort می تونید مشکل را حل کنید
البته در ابتدا راهنمای این تابع را به طور کامل مطالعه کنید

coronaa
جمعه 20 آذر 1394, 21:13 عصر
سلام
چطوری میتونم اعدادی که در m1 ایجاد شده رو ببرم توی txt و در هر سطر، اعداد با سمی کالون جدا بشه؟

m = rand(1,100)
m1 = reshape(m , 10 ,10 )'


بصورت زیر :

0.8147;0.9058;0.1270;0.9134;0.6324;0.0975;0.2785;0 .5469;0.9575;0.9649

rahnema1
شنبه 21 آذر 1394, 12:44 عصر
num2str(m1, '%f;')

coronaa
شنبه 21 آذر 1394, 13:23 عصر
num2str(m1, '%f;')
ممنونم.
با اکسل و یا OpenCalc هم میشه این کار رو انجام داد؟

rahnema1
شنبه 21 آذر 1394, 13:45 عصر
با فرمت csv ذخیره کنید

coronaa
شنبه 21 آذر 1394, 14:01 عصر
با فرمت csv ذخیره کنید
چرا csv ؟؟
همون دستوری که گفتین مشکلم حل شد.
حالا خواستم ببینم اگه نخوام با متلب این کار رو انجام بدم ، آیا با خود اکسل میشه این کار رو انجام داد؟
ببینید من یه داده 100 در 1 توی اکسل دارم که میخوام هر کدوم رو 10 تا 10 تا جدا کنم و توی 10 تا سطر بذارم و سپس با سمی کالن جداشون کنم و توی txt قرار بگیره.
با دستوری که توی متلب گفتید انجام دادم و حل شد. حالا میخوام بدونم با اکسل چطوری میتونم این کار رو انجام بدم که دیگه نیاز به متلب نباشه!

rahnema1
شنبه 21 آذر 1394, 14:36 عصر
فکر کنم لازمه 10 تا ده تا توی هر ستون کپی کنید و نهایتا با کلیک روی save با فرمت CSV ذخیره کنید توی اونجا می تونید مشخص کنید کاما یا سمی کالن بذاره

coronaa
سه شنبه 15 دی 1394, 21:12 عصر
سلام
میشه با دستورات متلب، یه سایتی رو باز کرد و دستور داد که مثلاً هر 1 دیقه یک بار رفرش کنه؟ یا یه عملیات دیگه ای روش انجام بده؟
و یا اینکه یه نرم افزار جانبی دیگه ای رو باز کنه و اجرا کنه؟

coronaa
چهارشنبه 05 اسفند 1394, 18:06 عصر
سلام
چطوری میشه این معادله دیفرانسیل مرتبه دوم رو توی متلب حل کرد؟ با دستور dsolve یک معادله رو میشه حل کرد؟


139271

meytim
جمعه 13 فروردین 1395, 23:05 عصر
سلام
میشه با دستورات متلب، یه سایتی رو باز کرد و دستور داد که مثلاً هر 1 دیقه یک بار رفرش کنه؟ یا یه عملیات دیگه ای روش انجام بده؟
و یا اینکه یه نرم افزار جانبی دیگه ای رو باز کنه و اجرا کنه؟

بله میشه؛ چند تا سؤال پرسیدید؛ یکی یکی با جزئیات بپرسید، تا ببینیم چه کاری می خواید انجام بدید.

از سؤال اول، ظاهراً دنبال web scarping با متلب هستید. متلب چند تا دستور واسه این کار داره، مثل دستورهای زیر:
urlread, urlwrite, web, webread


اما متلب در این زمینه یه مقدار ضعیفه، ولی میشه یک com server درست کرد و از دستورهای VBA مربوط به web scraping توی متلب استفاده کرد.

در مورد سؤال دوم، اگه نرم افزار مورد نظر API داشته باشه، میشه از طریق متلب باهاش interface ایجاد کرد و همه کاری کرد، اما اگه API نداشته باشه، بدبختیه، ولی غیرممکن نیست؛ باید دقیقاً نرم افزارش مشخص باشه چیه، بعد ببینید که قبلاً کسی همچین کاری کرده یا نه. اگه کسی کاری نکرده باشه، اون وقت باید کلی وقت بذاری تا یه راهی براش پیدا کنی. یکی از آخرین راههای پیشنهادی، استفاده از دستور robot زبان Java هست که می تونید توی متلب استفاده کنید.

meytim
جمعه 13 فروردین 1395, 23:12 عصر
سلام
چطوری میشه این معادله دیفرانسیل مرتبه دوم رو توی متلب حل کرد؟ با دستور dsolve یک معادله رو میشه حل کرد؟


139271


از dsolve استفاده نکنید؛ از روشهای عددی استفاده کنید، اونهایی که دستورشون با ode شروع میشه؛ مثل ode23
بعدش هم خود دستگاه معادلات رو به صورت یک mفایل تابع تعریف کنید.

اگه بلد نیستید، بخش 1 و 5 کتاب "شگردهای عددی در پاسخیابی پرسشهای مهدسی با برنامه ریزی MATLAB" رو بخونید.

پ.ن.: به نظرم اینها معادلات دیفرانسیل ارتعاشات آونگ دوگانه باشه

coronaa
شنبه 14 فروردین 1395, 09:23 صبح
از dsolve استفاده نکنید؛ از روشهای عددی استفاده کنید، اونهایی که دستورشون با ode شروع میشه؛ مثل ode23
بعدش هم خود دستگاه معادلات رو به صورت یک mفایل تابع تعریف کنید.

اگه بلد نیستید، بخش 1 و 5 کتاب "شگردهای عددی در پاسخیابی پرسشهای مهدسی با برنامه ریزی MATLAB" رو بخونید.

پ.ن.: به نظرم اینها معادلات دیفرانسیل ارتعاشات آونگ دوگانه باشه
اگه بخوام از روش رانگ کوتا استفاده کنم باز باید با ode انجام بدم؟

meytim
شنبه 14 فروردین 1395, 22:00 عصر
اگه بخوام از روش رانگ کوتا استفاده کنم باز باید با ode انجام بدم؟

بله، توابع زیر برای روش رانگ ـ کوتای adaptive stepsize هستند:
ode23
ode45

coronaa
شنبه 22 خرداد 1395, 19:03 عصر
سلام
کسی هست بتونه این رابطه رو توی متلب کد بزنه یا حداقل معادلش رو توی زبانهای دیگه بگه چطوریه؟


140818

coronaa
شنبه 22 خرداد 1395, 20:57 عصر
من کد رو به این صورت نوشتم ولی انگار دستوری که برای sum نوشتم اشکال داره!


clc;
clear;
close all;


alpha = 0.5;
a = 0;
k = 1;
t = 10;
h = 0.1;


upper_band = round((t-a)/h);
expr = (1./(h.^alpha))*sum((-1)^(k)*binomial(alpha,k)*f(t-k*h), k = 0..upper_band);




f(t) = limit(expr,h,0)

خطایی که میده بصورت زیره:


Error: File: letnikov.m Line: 12 Column: 67
The expression to the left of the equals sign is not a valid target for an
assignment.

coronaa
شنبه 22 خرداد 1395, 22:46 عصر
من مشکل بالایی رو حل کردم و کدش بصورت زیر شد :



clc;
clear;
close all;


alpha = 0.5;
a = 0;
k = 1;
t = 10;
h = 0.1;


upper_band = round((t-a)/h);
expr = (1./(h.^alpha))*symsum(((-1).^(k))*binomial(alpha,k)*f(t-k*h), k , 0 ,upper_band);




f(t) = limit(expr,h,0)


حالا خطایی که میده برای binomial هست.
بصورت زیر :


Undefined function 'binomial' for input arguments of type 'double'.


Error in letnikov (line 12)
expr = (1./(h.^alpha))*symsum(((-1).^(k))*binomial(alpha,k)*f(t-k*h), k , 0
,upper_band);

coronaa
شنبه 22 خرداد 1395, 23:00 عصر
خطای قبلی رو هم برطرف کردم و کد جدید بصورت زیر شد:



clc;
clear;
close all;


alpha = 0.5;
a = 0;
k = 1;
t = 10;
h = 0.1;


upper_band = round((t-a)/h);
expr = (1./(h.^alpha))*symsum(((-1).^(k))*nchoosek(alpha,k)*f(t-k*h), k , 0 ,upper_band);




f(t) = limit(expr,h,0)


و الآن خطای جدید روی f هست.



Undefined function 'f' for input arguments of type 'double'.


Error in letnikov (line 12)
expr = (1./(h.^alpha))*symsum(((-1).^(k))*nchoosek(alpha,k)*f(t-k*h), k , 0
,upper_band);

coronaa
پنج شنبه 25 آذر 1395, 19:49 عصر
سلام دوستان
کسی میدونه فرق machine learning با deep learning چیه؟؟؟
و اینکه عملکرد کدوم بهتره؟

coronaa
جمعه 24 دی 1395, 09:38 صبح
سلام
کسی هست بتونه این رابطه رو توی متلب کد بزنه یا حداقل معادلش رو توی زبانهای دیگه بگه چطوریه؟


140818


کسی نیست کمکم کنه؟؟؟

meytim
دوشنبه 04 بهمن 1395, 10:33 صبح
خطای قبلی رو هم برطرف کردم و کد جدید بصورت زیر شد:



clc;
clear;
close all;


alpha = 0.5;
a = 0;
k = 1;
t = 10;
h = 0.1;


upper_band = round((t-a)/h);
expr = (1./(h.^alpha))*symsum(((-1).^(k))*nchoosek(alpha,k)*f(t-k*h), k , 0 ,upper_band);




f(t) = limit(expr,h,0)


و الآن خطای جدید روی f هست.



Undefined function 'f' for input arguments of type 'double'.


Error in letnikov (line 12)
expr = (1./(h.^alpha))*symsum(((-1).^(k))*nchoosek(alpha,k)*f(t-k*h), k , 0
,upper_band);


شما باید فایل رو به صورت تابع تعریف کنید و یکی از ورودیهای تابع رو همون تابع f تعریف کنید. بعدش قبل از فراخوانی، اون تابع f رو تعریف کنید. در این راه، نیاز میشه از تابع feval یا inline استفاده کنید.

coronaa
سه شنبه 05 بهمن 1395, 20:55 عصر
شما باید فایل رو به صورت تابع تعریف کنید و یکی از ورودیهای تابع رو همون تابع f تعریف کنید. بعدش قبل از فراخوانی، اون تابع f رو تعریف کنید. در این راه، نیاز میشه از تابع feval یا inline استفاده کنید.
سلام
ببخشید. میشه بیشتر راهنمایی کنید؟
من بصورت زیر نوشتم :





function f = Letnikov(alpha)


% alpha = 0.5;


a = 0;
k = 1;
t = 10;
h = 0.1;


upper_band = round((t-a)/h);
expr = (1./(h.^alpha))*symsum(((-1).^(k))*nchoosek(alpha,k)*f(t-k*h), k , 0 ,upper_band);




f(t) = limit(expr,h,0)

coronaa
چهارشنبه 09 فروردین 1396, 23:21 عصر
با سلام خدمت دوستان.
من یه جدولی دارم که 10 ستون اول مقادیر پارامترها و دو ستون آخر توابع هزینه هستن.
میخوام توابع هزینه رو با نمودار Pareto رسم کنم. و بهترین تابع هزینه مشخص بشه.
کسی هست بتونه راهنماییم کنه؟

http://www.sharefile.ir/uploads/1490888705.xlsx

coronaa
پنج شنبه 25 خرداد 1396, 17:17 عصر
با سلام خدمت دوستان.
من یه جدولی دارم که 10 ستون اول مقادیر پارامترها و دو ستون آخر توابع هزینه هستن.
میخوام توابع هزینه رو با نمودار Pareto رسم کنم. و بهترین تابع هزینه مشخص بشه.
کسی هست بتونه راهنماییم کنه؟

http://www.sharefile.ir/uploads/1490888705.xlsx



کسی نیست کمکم کنه ؟؟؟

mb1372
شنبه 27 خرداد 1396, 15:09 عصر
با سلام خدمت دوستان.
من یه جدولی دارم که 10 ستون اول مقادیر پارامترها و دو ستون آخر توابع هزینه هستن.
میخوام توابع هزینه رو با نمودار Pareto رسم کنم. و بهترین تابع هزینه مشخص بشه.
کسی هست بتونه راهنماییم کنه؟

http://www.sharefile.ir/uploads/1490888705.xlsx


سلام
مشکل در وارد کردن داده هاست؟ یا رسم نمودار؟

pareto(V)
با استفاده از کد بالا میشه یک بردار رو به صورت نمودار ستونی رسم کرد.
البته با این تعداد زیاد ستونی که مورد نظر شما هست این نمودار، خیلی شلوغ و نامنظم رسم خواهد شد.

coronaa
شنبه 27 خرداد 1396, 17:57 عصر
سلام
مشکل در وارد کردن داده هاست؟ یا رسم نمودار؟

pareto(V)
با استفاده از کد بالا میشه یک بردار رو به صورت نمودار ستونی رسم کرد.
البته با این تعداد زیاد ستونی که مورد نظر شما هست این نمودار، خیلی شلوغ و نامنظم رسم خواهد شد.

سلام.
مشکل در رسم نمودار هست.
من فقط با دو ستون آخر کار دارم و بقیه استفاده نمیشه.
من نمودار بصورت ستونی نمیخوام. میخوام نقاطی رو توی نمودار نشون بده که کمترین تابع هزینه رو دارن.
بصورت زیر
:145522

mb1372
یک شنبه 28 خرداد 1396, 13:15 عصر
سلام.
مشکل در رسم نمودار هست.
من فقط با دو ستون آخر کار دارم و بقیه استفاده نمیشه.
من نمودار بصورت ستونی نمیخوام. میخوام نقاطی رو توی نمودار نشون بده که کمترین تابع هزینه رو دارن.
بصورت زیر
:

منظورتون رو از کمترین تابع هزینه، متوجه نشدم. مثلا اگه دو ستون آخر فایل پیوست به صورت زیر باشه:

2 3
15 9
-2 12
45 21
باید چه نقاطی در نمودار رسم بشه؟

coronaa
یک شنبه 28 خرداد 1396, 22:22 عصر
منظورتون رو از کمترین تابع هزینه، متوجه نشدم. مثلا اگه دو ستون آخر فایل پیوست به صورت زیر باشه:

2 3
15 9
-2 12
45 21
باید چه نقاطی در نمودار رسم بشه؟

مثلا اگه همچین ستونی داشته باشیم که 100 تا سطر داشته باشه و بخوایم ده تا از زوج مرتب هایی که کمترین مقدار رو دارند رو رسم کنیم ، (2,3) یکی از اونها خواهد بود.
مثلا ستون اول را در محور x ها و ستون دوم را در محور y ها رسم کنید.
اگه همون فایل اکسل رو پلات کنید تصویر پایین رو خواهید داشت. ولی من فقط نقاطی که خودم با خط مشکی به هم وصل کردم رو میخوام.
در ضمن ، همه اعداد مثبت هستن.


http://www.sharefile.ir/uploads/1497851594.jpg

mb1372
دوشنبه 29 خرداد 1396, 16:54 عصر
مثلا اگه همچین ستونی داشته باشیم که 100 تا سطر داشته باشه و بخوایم ده تا از زوج مرتب هایی که کمترین مقدار رو دارند رو رسم کنیم ، (2,3) یکی از اونها خواهد بود.
مثلا ستون اول را در محور x ها و ستون دوم را در محور y ها رسم کنید.
اگه همون فایل اکسل رو پلات کنید تصویر پایین رو خواهید داشت. ولی من فقط نقاطی که خودم با خط مشکی به هم وصل کردم رو میخوام.
در ضمن ، همه اعداد مثبت هستن.


http://www.sharefile.ir/uploads/1497851594.jpg

چه مسئله جالبی!
نتیجه سعی من کدهای زیر شد. دقیقا اون چیزی که رسم کردید در نمیاد ولی امیدوارم کارتون رو راه بندازه.
تو این کدها روش کار به این صورته که ابتدا داده ها بر حسب مقدار x شون، مرتب میشن. داده ی اول و آخر رسم میشه. همچنین داده ای که دارای کمترین تابع هزینه ست رسم میشه. تا اینجا سه نقطه رسم شدن. از ابتدای بازه تا نقطه ی مینیمم بررسی میشه که آیا سایر نقاط زیر این خط (خط عبور کرده از نقطه اول و مینیمم) قرار گرفتند یا نه؟ و در صورتی که زیر خط باشن رسم میشه. این کار تا پوشش دادن تمام بازه اعداد تکرار میشه.
در قسمت بعدی این کار برای نقطه ی مینیمم تا انتهای بازه تکرار میشه.

کد اصلی (اعداد خودتون رو جایگزین کنید):

clc
clear
close
global Data


Data=[1 4
1.6 45
8 12
1.7 2
2.2 31
4 12
5.5 6
9 15
2.4 1];
Data=sortrows(Data);
plot(Data(1,1),Data(1,2),'ro','markersize',8) % plot first point
hold on
min_inx_g=find(Data(:,2)==min(Data(:,2)));
plot(Data(min_inx_g,1),Data(min_inx_g,2),'ro','mar kersize',8) % plot min point
min_inx=min_inx_g;
while 1
if min_inx~=length(Data)
[k is_upper]=plot_min_point(1,min_inx);
if is_upper==1 % there are no points above the line.
break
end
min_inx=k;
else
break
end
end
plot(Data(end,1),Data(end,2),'ro','markersize',8) % plot end point
min_inx=min_inx_g;
while 1
if min_inx~=length(Data)
[k is_upper]=plot_min_point(min_inx,length(Data));
if is_upper==1 % there are no points above the line.
break
end
min_inx=k;
else
break
end
end
plot(Data(:,1),Data(:,2),'b*')

تابع:

function [k is_upper]=plot_min_point(i,j)global Data
is_upper=[];
for k=j-1:-1:i+1
if ~(Data(k,2)>Data(i,2)+(Data(j,2)-Data(i,2))/(Data(j,1)-Data(i,1))*(Data(k,1)-Data(i,1)))
plot(Data(k,1),Data(k,2),'ro','markersize',8)
if k==2
is_upper=0;
end
break;
else
if k==2
is_upper=1;
end
end
end
end
نمودار خروجی برای داده های خودتون:
http://www.sharefile.ir/uploads/1497905283.jpg

coronaa
دوشنبه 29 خرداد 1396, 20:06 عصر
چه مسئله جالبی!
نتیجه سعی من کدهای زیر شد. دقیقا اون چیزی که رسم کردید در نمیاد ولی امیدوارم کارتون رو راه بندازه.
تو این کدها روش کار به این صورته که ابتدا داده ها بر حسب مقدار x شون، مرتب میشن. داده ی اول و آخر رسم میشه. همچنین داده ای که دارای کمترین تابع هزینه ست رسم میشه. تا اینجا سه نقطه رسم شدن. از ابتدای بازه تا نقطه ی مینیمم بررسی میشه که آیا سایر نقاط زیر این خط (خط عبور کرده از نقطه اول و مینیمم) قرار گرفتند یا نه؟ و در صورتی که زیر خط باشن رسم میشه. این کار تا پوشش دادن تمام بازه اعداد تکرار میشه.
در قسمت بعدی این کار برای نقطه ی مینیمم تا انتهای بازه تکرار میشه.

کد اصلی (اعداد خودتون رو جایگزین کنید):

clc
clear
close
global Data


Data=[1 4
1.6 45
8 12
1.7 2
2.2 31
4 12
5.5 6
9 15
2.4 1];
Data=sortrows(Data);
plot(Data(1,1),Data(1,2),'ro','markersize',8) % plot first point
hold on
min_inx_g=find(Data(:,2)==min(Data(:,2)));
plot(Data(min_inx_g,1),Data(min_inx_g,2),'ro','mar kersize',8) % plot min point
min_inx=min_inx_g;
while 1
if min_inx~=length(Data)
[k is_upper]=plot_min_point(1,min_inx);
if is_upper==1 % there are no points above the line.
break
end
min_inx=k;
else
break
end
end
plot(Data(end,1),Data(end,2),'ro','markersize',8) % plot end point
min_inx=min_inx_g;
while 1
if min_inx~=length(Data)
[k is_upper]=plot_min_point(min_inx,length(Data));
if is_upper==1 % there are no points above the line.
break
end
min_inx=k;
else
break
end
end
plot(Data(:,1),Data(:,2),'b*')

تابع:

function [k is_upper]=plot_min_point(i,j)global Data
is_upper=[];
for k=j-1:-1:i+1
if ~(Data(k,2)>Data(i,2)+(Data(j,2)-Data(i,2))/(Data(j,1)-Data(i,1))*(Data(k,1)-Data(i,1)))
plot(Data(k,1),Data(k,2),'ro','markersize',8)
if k==2
is_upper=0;
end
break;
else
if k==2
is_upper=1;
end
end
end
end
نمودار خروجی برای داده های خودتون:
http://www.sharefile.ir/uploads/1497905283.jpg
سلام دوست عزیز
خیلی عالیه!
تقزیبا همینو میخواستم.
حالا نمیشه بقیه نقاط که مورد نظرمون نیست رو حذف کرد؟؟؟

mb1372
دوشنبه 29 خرداد 1396, 23:49 عصر
سلام دوست عزیز
خیلی عالیه!
تقزیبا همینو میخواستم.
حالا نمیشه بقیه نقاط که مورد نظرمون نیست رو حذف کرد؟؟؟
سلام
یه متغیر global تعریف کنید و کد رو تغییر بدید. اونجاهایی که نقاط رسم میشه، به جای رسم نمودار، نقطه رو به عنوان درایه ی جدید توی متغیر ذخیره کنید. اخرش هم اون نقطه هایی رو که نمی خواید با دستور زیر حذف کنید:

var(3,:)=[];
در انتها با استفاده از این متغیر نمودار رو رسم کنید.

coronaa
سه شنبه 30 خرداد 1396, 00:28 صبح
این نقاطی که رسم شدن، برای دو ستون آخر هستن؟ من رسم میکنم بصورت زیر میشه :

145545

mb1372
سه شنبه 30 خرداد 1396, 01:01 صبح
این نقاطی که رسم شدن، برای دو ستون آخر هستن؟ من رسم میکنم بصورت زیر میشه :

145545

عکس باز نشد. ولی میتونم حدس بزنم مشکل کجاست. اعداد خیلی بزرگی در بین داده های بود (10 به توان 20!). نموداری که گذاشتم بزرگنمایی یک قسمت کوچک بود تا عملکرد کد بهتر دیده بشه. در واقع نموداری رو که گذاشتم میتونید با استفاده از دستور زیر (بعد از اجرای کد یا در خط اخر کد اصلی) یا با زوم کردن تولید کنید.

axis([0 5 0 3])

پ.ن: هفت بیجار یعنی چی؟:لبخندساده: این تاپیک مخصوص سوالای خودتونه؟

coronaa
سه شنبه 30 خرداد 1396, 21:15 عصر
سلام
یه متغیر global تعریف کنید و کد رو تغییر بدید. اونجاهایی که نقاط رسم میشه، به جای رسم نمودار، نقطه رو به عنوان درایه ی جدید توی متغیر ذخیره کنید. اخرش هم اون نقطه هایی رو که نمی خواید با دستور زیر حذف کنید:

var(3,:)=[];
در انتها با استفاده از این متغیر نمودار رو رسم کنید.
مهندس ببخشید. هنوز این قسمت رو نتونستم انجام بدم!
الآن var همون متغیر global هست؟

coronaa
سه شنبه 30 خرداد 1396, 21:19 عصر
عکس باز نشد. ولی میتونم حدس بزنم مشکل کجاست. اعداد خیلی بزرگی در بین داده های بود (10 به توان 20!). نموداری که گذاشتم بزرگنمایی یک قسمت کوچک بود تا عملکرد کد بهتر دیده بشه. در واقع نموداری رو که گذاشتم میتونید با استفاده از دستور زیر (بعد از اجرای کد یا در خط اخر کد اصلی) یا با زوم کردن تولید کنید.

axis([0 5 0 3])

پ.ن: هفت بیجار یعنی چی؟:لبخندساده: این تاپیک مخصوص سوالای خودتونه؟
دقیقا همین منظورم بود. درست شد.

پ.ن: یه نوع ترشی مازندرانی هست و در اصلاح یعنی قاطی پاتی :خجالت: . چون سوالات مختلفی می پرسم این عنوان رو انتخاب کردم.
این قسمت مخصوص سوالات من هست ولی میتونه یه آرشیو ارزشمندی برای دیگر دوستان هم باشه.

mb1372
چهارشنبه 31 خرداد 1396, 00:27 صبح
مهندس ببخشید. هنوز این قسمت رو نتونستم انجام بدم!
الآن var همون متغیر global هست؟
آره. برای اینکه متغیر سراسری تعریف کنید دستور زیر رو در کد اصلی و کد تابع قرار بدید (بهتره قبل از مقداردهیش باشه):

global var
البته چون چند تا متغیر سراسری داریم میشه این جوری هم نوشتش:

global var Data



بعدش به جای اینکه نقطه اول رو رسم کنید (یا در کنار رسم نقطه ی اول) کد زیر رو اضافه کنید:

var(1,:)=Data(1,:)
یا در خط پنجم تابع (و همچنین در کنار رسم نقطه ی آخر)، کد زیر رو اضافه کنید:

var(end+1,:)=Data(k,:)

coronaa
چهارشنبه 31 خرداد 1396, 16:08 عصر
آره. برای اینکه متغیر سراسری تعریف کنید دستور زیر رو در کد اصلی و کد تابع قرار بدید (بهتره قبل از مقداردهیش باشه):

global var
البته چون چند تا متغیر سراسری داریم میشه این جوری هم نوشتش:

global var Data




بعدش به جای اینکه نقطه اول رو رسم کنید (یا در کنار رسم نقطه ی اول) کد زیر رو اضافه کنید:

var(1,:)=Data(1,:)
یا در خط پنجم تابع (و همچنین در کنار رسم نقطه ی آخر)، کد زیر رو اضافه کنید:

var(end+1,:)=Data(k,:)
مهندس انجام دادم. نشد!
توی خط 31 اضافه کردم.



clc ;
clear ;
close all ;


% global Data
global var Data


Data = xlsread('C:\Users\User\Desktop\Pareto Front\2\natayej1.xlsx',1);
% save Data.mat
% load('Data.mat');
Data=sortrows(Data);
plot(Data(1,1),Data(1,2),'ro','markersize',8) % plot first point
hold on
min_inx_g=find(Data(:,2)==min(Data(:,2)));
plot(Data(min_inx_g,1),Data(min_inx_g,2),'ro','mar kersize',8) % plot min point
min_inx=min_inx_g;
while 1
if min_inx~=length(Data)
[k is_upper]=plot_min_point(1,min_inx);
if is_upper==1 % there are no points above the line.
break
end
min_inx=k;
else
break
end
end
plot(Data(end,1),Data(end,2),'ro','markersize',8) % plot end point
var(1,:)=Data(1,:)
min_inx=min_inx_g;
while 1
if min_inx~=length(Data)
[k is_upper]=plot_min_point(min_inx,length(Data));
if is_upper==1 % there are no points above the line.
break
end
min_inx=k;
else
break
end
end
plot(Data(:,1),Data(:,2),'b*')
axis([0 5 0 3])

mb1372
چهارشنبه 31 خرداد 1396, 16:35 عصر
مهندس انجام دادم. نشد!
توی خط 31 اضافه کردم.


تابع هم باید تغییر کنه. اندیس ها رو فک کنم اشتباه گذاشتید. منظورم این طوری بود:
کد اصلی:

clc
clear
close
global Data var
Data=[1 4
1.6 45
8 12
1.7 2
2.2 31
4 12
5.5 6
9 15
2.4 1];
Data=sortrows(Data);
plot(Data(1,1),Data(1,2),'ro','markersize',8) % plot first point
hold on
var(1,:)=Data(1,:);
min_inx_g=find(Data(:,2)==min(Data(:,2)));
plot(Data(min_inx_g,1),Data(min_inx_g,2),'ro','mar kersize',8) % plot min point
var(end+1,:)=Data(min_inx_g,:);
min_inx=min_inx_g;
while 1
if min_inx~=length(Data)
[k is_upper]=plot_min_point(1,min_inx);
if is_upper==1 % there are no points above the line.
break
end
min_inx=k;
else
break
end
end
plot(Data(end,1),Data(end,2),'ro','markersize',8) % plot end point
min_inx=min_inx_g;
var(end+1,:)=Data(end,:);
while 1
if min_inx~=length(Data)
[k is_upper]=plot_min_point(min_inx,length(Data));
if is_upper==1 % there are no points above the line.
break
end
min_inx=k;
else
break
end
end
plot(Data(:,1),Data(:,2),'b*')
var=sortrows(var);
% axis([0 5 0 3])
تابع:

function [k is_upper]=plot_min_point(i,j)
global Data var
is_upper=[];
for k=j-1:-1:i+1
if ~(Data(k,2)>Data(i,2)+(Data(j,2)-Data(i,2))/(Data(j,1)-Data(i,1))*(Data(k,1)-Data(i,1)))
plot(Data(k,1),Data(k,2),'ro','markersize',8)
var(end+1,:)=Data(k,:);
if k==2
is_upper=0;
end
break;
else
if k==2
is_upper=1;
end
end
end
end
البته برای داده های خودتون باید تغییرش بدید.

coronaa
پنج شنبه 01 تیر 1396, 17:10 عصر
سلام
کسی هست بتونه این رابطه رو توی متلب کد بزنه یا حداقل معادلش رو توی زبانهای دیگه بگه چطوریه؟


140818



خطای قبلی رو هم برطرف کردم و کد جدید بصورت زیر شد:



clc;
clear;
close all;


alpha = 0.5;
a = 0;
k = 1;
t = 10;
h = 0.1;


upper_band = round((t-a)/h);
expr = (1./(h.^alpha))*symsum(((-1).^(k))*nchoosek(alpha,k)*f(t-k*h), k , 0 ,upper_band);




f(t) = limit(expr,h,0)


و الآن خطای جدید روی f هست.



Undefined function 'f' for input arguments of type 'double'.


Error in letnikov (line 12)
expr = (1./(h.^alpha))*symsum(((-1).^(k))*nchoosek(alpha,k)*f(t-k*h), k , 0
,upper_band);


مهندس سلام.
میشه روی این معادله هم یه راهنمایی بکنید؟

mb1372
پنج شنبه 01 تیر 1396, 17:57 عصر
مهندس سلام.
میشه روی این معادله هم یه راهنمایی بکنید؟
سلام
تابع زیر ظاهرا بدون مشکل کار میکنه. فقط باید دامنه و ثابت ها رو درست انتخاب کرده باشید.

function y=fun_fun(t)
alpha = 101;
a = 0;
k = 1;
h = 0.1;
y=0;
f=@(x) sin(x)
for k=0:round((t-a)/h)
y=y+(1./(h.^alpha))*((-1).^(k))*nchoosek(alpha,k)*f(t-k*h);
end
end

coronaa
پنج شنبه 01 تیر 1396, 21:54 عصر
سلام
تابع زیر ظاهرا بدون مشکل کار میکنه. فقط باید دامنه و ثابت ها رو درست انتخاب کرده باشید.

function y=fun_fun(t)
alpha = 101;
a = 0;
k = 1;
h = 0.1;
y=0;
f=@(x) sin(x)
for k=0:round((t-a)/h)
y=y+(1./(h.^alpha))*((-1).^(k))*nchoosek(alpha,k)*f(t-k*h);
end
end

آلفا نمیشه اعشاری باشه؟
این معادله برای مبحث مرتبه کسری هست و آلفا معمولا یک عدد کسری و بین 0 تا 2 انتخاب میشه.

mb1372
پنج شنبه 01 تیر 1396, 23:09 عصر
آلفا نمیشه اعشاری باشه؟
این معادله برای مبحث مرتبه کسری هست و آلفا معمولا یک عدد کسری و بین 0 تا 2 انتخاب میشه.
در مورد ثابت های این تابع نمیدونم. اما میدونم که کد

nchoosek(alpha,k)
فقط زمانی جواب میده که k کوچکتر از آلفا باشه (طبق تعریف ترکیب). اون مقدار از آلفا رو صرفا برای رهایی از خطا انتخاب کردم.
مقدار ثابت ها رو از یک مرجع پیدا کنید.

coronaa
سه شنبه 06 تیر 1396, 15:56 عصر
تابع هم باید تغییر کنه. اندیس ها رو فک کنم اشتباه گذاشتید. منظورم این طوری بود:
کد اصلی:

clc
clear
close
global Data var
Data=[1 4
1.6 45
8 12
1.7 2
2.2 31
4 12
5.5 6
9 15
2.4 1];
Data=sortrows(Data);
plot(Data(1,1),Data(1,2),'ro','markersize',8) % plot first point
hold on
var(1,:)=Data(1,:);
min_inx_g=find(Data(:,2)==min(Data(:,2)));
plot(Data(min_inx_g,1),Data(min_inx_g,2),'ro','mar kersize',8) % plot min point
var(end+1,:)=Data(min_inx_g,:);
min_inx=min_inx_g;
while 1
if min_inx~=length(Data)
[k is_upper]=plot_min_point(1,min_inx);
if is_upper==1 % there are no points above the line.
break
end
min_inx=k;
else
break
end
end
plot(Data(end,1),Data(end,2),'ro','markersize',8) % plot end point
min_inx=min_inx_g;
var(end+1,:)=Data(end,:);
while 1
if min_inx~=length(Data)
[k is_upper]=plot_min_point(min_inx,length(Data));
if is_upper==1 % there are no points above the line.
break
end
min_inx=k;
else
break
end
end
plot(Data(:,1),Data(:,2),'b*')
var=sortrows(var);
% axis([0 5 0 3])
تابع:

function [k is_upper]=plot_min_point(i,j)
global Data var
is_upper=[];
for k=j-1:-1:i+1
if ~(Data(k,2)>Data(i,2)+(Data(j,2)-Data(i,2))/(Data(j,1)-Data(i,1))*(Data(k,1)-Data(i,1)))
plot(Data(k,1),Data(k,2),'ro','markersize',8)
var(end+1,:)=Data(k,:);
if k==2
is_upper=0;
end
break;
else
if k==2
is_upper=1;
end
end
end
end
البته برای داده های خودتون باید تغییرش بدید.
مهندس سلام.
ببخشید این کد مگه نقاط دو ستون آخر رو پلات نمیکنه؟؟؟
پس چرا اون نقاط مرزی که با قرمز مشخص شده توی دو ستون آخر نیست؟
داده هام رو با دو فرمت mat و xlsx در لینک زیر قرار دادم:
http://www.sharefile.ir/uploads/1498573209.rar

mb1372
سه شنبه 06 تیر 1396, 22:08 عصر
مهندس سلام.
ببخشید این کد مگه نقاط دو ستون آخر رو پلات نمیکنه؟؟؟
پس چرا اون نقاط مرزی که با قرمز مشخص شده توی دو ستون آخر نیست؟
داده هام رو با دو فرمت mat و xlsx در لینک زیر قرار دادم:
http://www.sharefile.ir/uploads/1498573209.rar

سلام
اون کد، مینیمم داده های زیر رو رسم میکنه:

Data=[1 4 1.6 45 8 12
1.7 2
2.2 31
4 12
5.5 6
9 15
2.4 1];
همون تغییراتی که توی کد اول اعمال کردید، روی این هم اعمال کنید تا داده های خودتون رو رسم کنه. مثلا این خط:

Data = xlsread('C:\Users\User\Desktop\Pareto Front\2\natayej1.xlsx',1);
ضمنامتوجه نشدم منظورتون از نقاط مرزی رو کدومه ...

coronaa
چهارشنبه 07 تیر 1396, 15:34 عصر
منظورم همون نقاطی بود که با دایره قرمز مشخص میشه!
منم همینکار رو کردم. یعنی داده های خودم رو قرار دادم.
به صورت زیر پلات شد ولی نقاطش توی ستون end‌ و end-1 وجود نداره!



145633

coronaa
چهارشنبه 07 تیر 1396, 15:41 عصر
یه سوال دیگه هم دارم اینه که چطوری میتونم یه ماتریسی که با فایل dat ذخیره شده رو به اکسل تبدیل کنم؟

من با دستور زیر انجام میدم ولی خطا میده :



xlswrite('natayej.xlsx',matt)

لینک داده :
http://www.sharefile.ir/uploads/1498708715.rar

mb1372
شنبه 10 تیر 1396, 23:50 عصر
منظورم همون نقاطی بود که با دایره قرمز مشخص میشه!
منم همینکار رو کردم. یعنی داده های خودم رو قرار دادم.
به صورت زیر پلات شد ولی نقاطش توی ستون end‌ و end-1 وجود نداره!

مگه میشه؟؟! برای رسم نمودار از نقطه های فایلی که دادید استفاده شده. امکان نداره که نقطه ی جدیدی رسم بشه. مطمئنید توی لیست اعداد نیست؟


یه سوال دیگه هم دارم اینه که چطوری میتونم یه ماتریسی که با فایل dat ذخیره شده رو به اکسل تبدیل کنم؟

من با دستور زیر انجام میدم ولی خطا میده :



xlswrite('natayej.xlsx',matt)

لینک داده :
http://www.sharefile.ir/uploads/1498708715.rar

اگه داده هاتون با فرمت mat ذخیره شده، میتونید با کد زیر اونو باز کنید:

x=open('C:\temp\data.mat');

و با کد زیر ذخیره کنید:

xlswrite('natayej.xlsx',x.matt)

coronaa
یک شنبه 11 تیر 1396, 14:59 عصر
میشه همین داده هایی که گذاشتم رو شما خودتون پلات کنید؟
من دقیقا کاری انجام دادم که شما گفتید.
آدرس دیتا خودم رو دادم کد رو اجرا کردم.

mb1372
یک شنبه 11 تیر 1396, 22:07 عصر
میشه همین داده هایی که گذاشتم رو شما خودتون پلات کنید؟
من دقیقا کاری انجام دادم که شما گفتید.
آدرس دیتا خودم رو دادم کد رو اجرا کردم.
به نظرم مشکل از تکراری بودن ستون آخر در بین داده ها بود. این کد رو امتحان کنید:

clc
clear
close
global Data var
Data1=xlsread('C:\Users\Mohsen\Desktop\natayej1.xl sx',1);
Data=Data1(:,end-1:end);
Data=sortrows(Data);
plot(Data(1,1),Data(1,2),'ro','markersize',8) % plot first point
hold on
var=zeros(1,2);
var(1,:)=Data(1,:);
min_inx_g=max(find(Data(:,2)==min(Data(:,2))));
plot(Data(min_inx_g,1),Data(min_inx_g,2),'ro','mar kersize',8) % plot min point
var(end+1,:)=Data(min_inx_g,:);
min_inx=min_inx_g;
while 1
if min_inx~=length(Data)
[k is_upper]=plot_min_point(1,min_inx);
if is_upper==1 % there are no points above the line.
break
end
min_inx=k;
else
break
end
end
plot(Data(end,1),Data(end,2),'ro','markersize',8) % plot end point
min_inx=min_inx_g;
var(end+1,:)=Data(end,:);
while 1
if min_inx~=length(Data)
[k is_upper]=plot_min_point(min_inx,length(Data));
if is_upper==1 % there are no points above the line.
break
end
min_inx=k;
else
break
end
end
plot(Data(:,1),Data(:,2),'b*')
var=sortrows(var);
% axis([0 5 0 3])
اگه بازم مشکلی بود، نقطه ای که داره به داده هاتون اضافه میشه رو بگید و روی نمودار مشخص کنید.

coronaa
چهارشنبه 26 اردیبهشت 1397, 17:19 عصر
سلام دوستان.
ببخشید من یه ماتریس 10 در 10 دارم که میخوام اینو بین 0 تا 1 نرمالیزه کنم و بعد از انجام کارم دوباره اون رو به اعداد اصلی برگردونم.
به چه صورتی باید کد زد؟

coronaa
جمعه 28 اردیبهشت 1397, 11:42 صبح
سلام دوستان.
ببخشید من یه ماتریس 10 در 10 دارم که میخوام اینو بین 0 تا 1 نرمالیزه کنم و بعد از انجام کارم دوباره اون رو به اعداد اصلی برگردونم.
به چه صورتی باید کد زد؟
حل شد :)
-------------------

mb1372
جمعه 28 اردیبهشت 1397, 11:43 صبح
سلام دوست عزیز
نمیدونم درست متوجه شدم یا نه؟ این کد رو ببینید:

clc
clear
a=100*rand(10,10)
m=max(max(a));
a=a/m % normalized
a=a*m % anormalized!

پ.ن: حالا دیدم که حل شد :)

coronaa
جمعه 28 اردیبهشت 1397, 11:58 صبح
سلام دوست عزیز
نمیدونم درست متوجه شدم یا نه؟ این کد رو ببینید:

clc
clear
a=100*rand(10,10)
m=max(max(a));
a=a/m % normalized
a=a*m % anormalized!

پ.ن: حالا دیدم که حل شد :)
سلام بر شما . بله درسته.
منم از جای دیگه کد زیر رو گرفتم و استفاده کردم :



a=100*rand(10,10)
Ypred=a;
NormRows = sqrt(sum(Ypred.*Ypred,2));
Ynorm = bsxfun(@rdivide,abs(Ypred),NormRows);
a=Ynorm;

coronaa
جمعه 28 اردیبهشت 1397, 21:30 عصر
سلام.
میخوام با متلب به وبکم دوربین دسترسی داشته باشم و در هر 10 ثانیه برای مدت یک دقیقه یه عکس بگیره و اون عکس رو به چهار قسمت (4 برش) تبدیل کنه.
کسی هست کمکم کنه؟

coronaa
جمعه 13 اردیبهشت 1398, 18:26 عصر
سلام.
میخوام با متلب به وبکم دوربین دسترسی داشته باشم و در هر 10 ثانیه برای مدت یک دقیقه یه عکس بگیره و اون عکس رو به چهار قسمت (4 برش) تبدیل کنه.
کسی هست کمکم کنه؟
کسی نیست کمک کنه؟؟؟

coronaa
شنبه 15 تیر 1398, 19:50 عصر
سلام.
کسی میتونه راهنمایی کنه بگه این معادله دیفرانسیل چطوری حل میشه؟

http://www.sharefile.ir/uploads/1562455634.jpg

کدش رو بصورت زیر نوشتم ولی خطا میده!



clc
syms T(t)
syms R
syms U
M=1 ; Cp=2 ; I=3 ; h=4 ; A=5; Tinf=25 ;


% dsolve('DT=(1/M.Cp).*((I^2*R+I*T*U)-(h*A(T-Tinf)))','t')


o = diff(T) == (1/(M.Cp)).*(((I.^2*R)+(I*T*U))-(h*A(T-Tinf)));
T(t) = dsolve(o,'T(0)=1')


خطا :



Dot indexing is not supported for variables of this type.


Error in diffffff (line 11)
o = diff(T) == (1/(M.Cp)).*(((I.^2*R)+(I*T*U))-(h*A(T-Tinf)));

mb1372
شنبه 15 تیر 1398, 23:28 عصر
سلام.
کسی میتونه راهنمایی کنه بگه این معادله دیفرانسیل چطوری حل میشه؟



کدش رو بصورت زیر نوشتم ولی خطا میده!



clc
syms T(t)
syms R
syms U
M=1 ; Cp=2 ; I=3 ; h=4 ; A=5; Tinf=25 ;


% dsolve('DT=(1/M.Cp).*((I^2*R+I*T*U)-(h*A(T-Tinf)))','t')


o = diff(T) == (1/(M.Cp)).*(((I.^2*R)+(I*T*U))-(h*A(T-Tinf)));
T(t) = dsolve(o,'T(0)=1')


خطا :

سلام

ببینید جواب درست میده؟


clc
syms T(t)
syms R
syms U
M=1 ; Cp=2 ; I=3 ; h=4 ; A=5; Tinf=25 ;

% dsolve('DT=(1/M.Cp).*((I^2*R+I*T*U)-(h*A(T-Tinf)))','t')

o = diff(T) == (1/(M.*Cp)).*(((I.^2*R)+(I*T*U))-(h*A.*(T-Tinf)));
T(t) = dsolve(o,'T(0)=1')

coronaa
یک شنبه 16 تیر 1398, 13:07 عصر
سلام

ببینید جواب درست میده؟


clc
syms T(t)
syms R
syms U
M=1 ; Cp=2 ; I=3 ; h=4 ; A=5; Tinf=25 ;

% dsolve('DT=(1/M.Cp).*((I^2*R+I*T*U)-(h*A(T-Tinf)))','t')

o = diff(T) == (1/(M.*Cp)).*(((I.^2*R)+(I*T*U))-(h*A.*(T-Tinf)));
T(t) = dsolve(o,'T(0)=1')


سلام.
بله جواب داد :)
تشکر