با سلام خدمت دوستان.
من یه جدولی دارم که 10 ستون اول مقادیر پارامترها و دو ستون آخر توابع هزینه هستن.
میخوام توابع هزینه رو با نمودار Pareto رسم کنم. و بهترین تابع هزینه مشخص بشه.
کسی هست بتونه راهنماییم کنه؟
سلام.
مشکل در رسم نمودار هست.
من فقط با دو ستون آخر کار دارم و بقیه استفاده نمیشه.
من نمودار بصورت ستونی نمیخوام. میخوام نقاطی رو توی نمودار نشون بده که کمترین تابع هزینه رو دارن.
بصورت زیر
مثلا اگه همچین ستونی داشته باشیم که 100 تا سطر داشته باشه و بخوایم ده تا از زوج مرتب هایی که کمترین مقدار رو دارند رو رسم کنیم ، (2,3) یکی از اونها خواهد بود.
مثلا ستون اول را در محور x ها و ستون دوم را در محور y ها رسم کنید.
اگه همون فایل اکسل رو پلات کنید تصویر پایین رو خواهید داشت. ولی من فقط نقاطی که خودم با خط مشکی به هم وصل کردم رو میخوام.
در ضمن ، همه اعداد مثبت هستن.
این نقاطی که رسم شدن، برای دو ستون آخر هستن؟ من رسم میکنم بصورت زیر میشه :
عکس باز نشد. ولی میتونم حدس بزنم مشکل کجاست. اعداد خیلی بزرگی در بین داده های بود (10 به توان 20!). نموداری که گذاشتم بزرگنمایی یک قسمت کوچک بود تا عملکرد کد بهتر دیده بشه. در واقع نموداری رو که گذاشتم میتونید با استفاده از دستور زیر (بعد از اجرای کد یا در خط اخر کد اصلی) یا با زوم کردن تولید کنید.
axis([0 5 0 3])
پ.ن: هفت بیجار یعنی چی؟این تاپیک مخصوص سوالای خودتونه؟
منظورم همون نقاطی بود که با دایره قرمز مشخص میشه!
منم همینکار رو کردم. یعنی داده های خودم رو قرار دادم.
به صورت زیر پلات شد ولی نقاطش توی ستون end و end-1 وجود نداره!
میشه همین داده هایی که گذاشتم رو شما خودتون پلات کنید؟
من دقیقا کاری انجام دادم که شما گفتید.
آدرس دیتا خودم رو دادم کد رو اجرا کردم.
به نظرم مشکل از تکراری بودن ستون آخر در بین داده ها بود. این کد رو امتحان کنید:
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])
اگه بازم مشکلی بود، نقطه ای که داره به داده هاتون اضافه میشه رو بگید و روی نمودار مشخص کنید.
سلام دوستان.
ببخشید من یه ماتریس 10 در 10 دارم که میخوام اینو بین 0 تا 1 نرمالیزه کنم و بعد از انجام کارم دوباره اون رو به اعداد اصلی برگردونم.
به چه صورتی باید کد زد؟
سلام دوست عزیز
نمیدونم درست متوجه شدم یا نه؟ این کد رو ببینید:
clc
clear
a=100*rand(10,10)
m=max(max(a));
a=a/m % normalized
a=a*m % anormalized!
پ.ن: حالا دیدم که حل شد :)
سلام.
میخوام با متلب به وبکم دوربین دسترسی داشته باشم و در هر 10 ثانیه برای مدت یک دقیقه یه عکس بگیره و اون عکس رو به چهار قسمت (4 برش) تبدیل کنه.
کسی هست کمکم کنه؟