کلیدستان

نسخه‌ی کامل: تمام حالات ترکیب اعداد (متلب - MATLAB)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام، من میخوام برنامه تشکیل جدول COPT که تو مهندسی برق مورد استفاده قرار می گیره رو تو متلب بنویسم منتهی تو نوشتن اون به مشکل خوردم.
برنامه به این صورته که شما یه سری اعداد دارین و باید تمام حالاتی که این اعداد می تونن با هم جمع بشن رو تشکیل بدین
مثلا اعداد ورودی شما به این صورته :
120 , 450 , 250
و من میخوام برنامه ای بنویسم که خروجی اون تمام حالات جمع این اعداد با هم باشه یعنی :
120 , 250 , 370 , 450 , 570 , 700 , 820

روشی که به ذهن خودم رسیده اینه که به تعداد اعداد حالت های مختلف باینری اون رو تولید کنم یعنی مثلا تو این مثال می تونم با دستور 
(ff2n(3 انواع حالت های ترکیب 3 عدد مثال بالا رو به صورت باینری بنویسم اینجوری :
0 0 0
1 0 0
0 1 0
0 0 1
1 1 0
1 0 1
0 1 1
1 1 1

بعد با دستور های if و for میشه جمعشون کرد.

ولی مشکل اینجاست که اگه تعداد اعداد زیاد بشه دستور ff2n ارور میده و نمی تونه اونا رو تولید کنه مثلا برای 32 تا عدد ارور میده که برای تولید این تعداد عدد باینری به 1 گیگ فضا احتیاج داره و برا تولید 136 تا عدد کلا دستور ارور میده.

حالا از شما می خواستم که روشی رو پیشنهاد بدین که باهاش بشه انواع ترکیب های اعداد رو تولید کرد و تو این ترکیب ها اعداد رو جمع کرد.
سلام.
برای به دست آوردن تمام دنباله های باینری (Binary) امکان پذیر، می توانید از کد متلب (MATLAB) زیر استفاده نمایید :

کد پی‌اچ‌پی:
clear all
close all
clc

n
=3;
dec2bin(2^n-1:-1:0)-'0'
flipud(A

3 خط اول کدها، برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
نتیجه اجرای کد متلب (MATLAB) بالا :

کد پی‌اچ‌پی:
=

     
1     1     1
     1     1     0
     1     0     1
     1     0     0
     0     1     1
     0     1     0
     0     0     1
     0     0     0


=

     
0     0     0
     0     0     1
     0     1     0
     0     1     1
     1     0     0
     1     0     1
     1     1     0
     1     1     1 


Flower