نمایش نتایج 1 تا 40 از 235

نام تاپیک: هفتِ بیجار

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1

    نقل قول: هفتِ بیجار

    نقل قول نوشته شده توسط coronaa مشاهده تاپیک
    مهندس انجام دادم. نشد!
    توی خط 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

    البته برای داده های خودتون باید تغییرش بدید.

  2. #2

    نقل قول: هفتِ بیجار

    نقل قول نوشته شده توسط mb1372 مشاهده تاپیک
    تابع هم باید تغییر کنه. اندیس ها رو فک کنم اشتباه گذاشتید. منظورم این طوری بود:
    کد اصلی:
    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 در لینک زیر قرار دادم:

  3. #3

    نقل قول: هفتِ بیجار

    نقل قول نوشته شده توسط coronaa مشاهده تاپیک
    مهندس سلام.
    ببخشید این کد مگه نقاط دو ستون آخر رو پلات نمیکنه؟؟؟
    پس چرا اون نقاط مرزی که با قرمز مشخص شده توی دو ستون آخر نیست؟
    داده هام رو با دو فرمت mat و xlsx در لینک زیر قرار دادم:
    سلام
    اون کد، مینیمم داده های زیر رو رسم میکنه:
    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);

    ضمنامتوجه نشدم منظورتون از نقاط مرزی رو کدومه ...

  4. #4

    نقل قول: هفتِ بیجار

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

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


    xlswrite('natayej.xlsx',matt)
    لینک داده :
    http://www.sharefile.ir/uploads/1498708715.rar

  5. #5

    نقل قول: هفتِ بیجار

    نقل قول نوشته شده توسط coronaa مشاهده تاپیک
    منظورم همون نقاطی بود که با دایره قرمز مشخص میشه!
    منم همینکار رو کردم. یعنی داده های خودم رو قرار دادم.
    به صورت زیر پلات شد ولی نقاطش توی ستون end‌ و end-1 وجود نداره!
    مگه میشه؟؟! برای رسم نمودار از نقطه های فایلی که دادید استفاده شده. امکان نداره که نقطه ی جدیدی رسم بشه. مطمئنید توی لیست اعداد نیست؟

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

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


    xlswrite('natayej.xlsx',matt)
    لینک داده :
    http://www.sharefile.ir/uploads/1498708715.rar
    اگه داده هاتون با فرمت mat ذخیره شده، میتونید با کد زیر اونو باز کنید:
    x=open('C:\temp\data.mat');


    و با کد زیر ذخیره کنید:
    xlswrite('natayej.xlsx',x.matt)

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •