اطلاعیه

Collapse
No announcement yet.

نحوه ی تبدیل متغیر 2 بعدی به 3 بعدی

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    نحوه ی تبدیل متغیر 2 بعدی به 3 بعدی

    سلام.
    دوستان یه سوال داشتم، یه برنامه ی آماده دارم که لازمه توش یه خرده تغییرات اعمال کنم.به علت کمبود وقت هم نمیشه بشینم از اول برنامه رو بنویسم و داخلش تغییرات اساسی اعمال کنم.
    کاری که میخوام بکنم اینه :

    در قسمتی از برنامه، به کمک یه دستور متلب، یه سری محاسبات انجام میشه و نتیجه ی محاسبات به شکل یه ماتریس مربعی در میاد که داخل متغییری ریخته میشه.توضیح اضافی هم اینکه ابعاد این ماتریس مربعی رو نمیدونیم! حالا من میخوام اون دستور متلب رو به ازای یه تغییرات دیگه مشاهده بکنم.لذا لازمه که اون متغیر که ماتریسی مربعی میشد، یه بــُــعـــد (dimension) دیگه بهش اضافه بشه تا به ازای هر تغییر، اون ماتریس مربعی تشکیل و ذخیره بشه....ولی چجوری؟!!

    #2
    پاسخ : نحوه ی تبدیل متغیر 2 بعدی به 3 بعدی

    سلام. درست متوجه سوالت نشدم.
    اگه ابعاد همه ماتریس های دوبعدی یکسانه:
    کد PHP:
    >&gtrand(4,4);
    &
    gt;&gtrand(4,4);
    &
    gt;&gtzeros(4,4,2);
    &
    gt;&gtc(:,:,1) = a;
    &
    gt;&gtc(:,:,2) = b

    ولی اگه ابعادش هر بار فرق می کنه، نمیشه از ماتریس سه بعدی برای ذخیره کردنش استفاده کنی و بهتره از cell استفاده کنی:
    کد PHP:
    >&gtrand(4,4);
    &
    gt;&gtrand(5,5);
    &
    gt;&gt= {a,b}; 

    لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
    لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
    با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
    اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
    يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

    دیدگاه


      #3
      پاسخ : نحوه ی تبدیل متغیر 2 بعدی به 3 بعدی

      خیلی خیلی ممنونم ازتون و معذرت میخوام که دیر تونستم بیام انجمن.
      کل مسئله رو به یه شکل دیگه حلش کردم، این سوال رو هم به طریق زیر حل کردم ، ولی جواب نهایی کاملاً غلط میشد.حالا کجای محاسبات اشتباه میشد رو نمیدونم.
      برنامه رو اینجوری تغییر داده بودم:

      کد:
      H1 = H + V;
        
        [vec_w,vec_l]=size(H1);
      
        for kk=1:1:vec_w
          for jj=1:1:vec_l
            v_test(kk,jj,L_count)=V(kk,jj);
            h_test(kk,jj,L_count)=H1(kk,jj);
          end  
        end
      
        [eig_vec eig_val] = eig(h_test(:,:,L_count));
        Say = eig_vec;
        
        for kk=1:1:vec_w
          for jj=1:1:vec_l
            say_p(kk,jj,L_count)=Say(kk,jj);
          end  
        end
      H1 نتیجه ی یه سری محاسبات رو متغیرهای دو بعدی H و V هست.که در هر بار انجام محاسبات بر روی H وV یه پارامتر رو تغییر میدم.(یه for بزرگ هست که توش متغیر L_count رو افزایش میدم و این متغیر توی اون محاسبات روی H و V موثر هست)
      دوتا for اولی اون کاری که میخوام رو انجام میده و بعد دستور eig که مقدار ویژه و بردار ویژه رو محاسبه میکنه.Say = eig_vec; اصلی ترین جای ماجرا هست که say رو باید آخر سر رسم بکنم به ازای تغییرات L_count .
      (L_count رو مثلا 3 بار افزایش میدم و به ازای هر بار افزایش هم یه شکل رسم میکنم)
      نمیدونم توضیح بیشتری بدم به حل ماجرا کمکی میکنه یا نه؟ اما خلاصه ی ماجرا و ایرادی که بعدا پیش اومد اینه که وقتی L_Count آخرین مقدار خودش رو داره(مثلا3)، شکل رسم شده صحیح هست.اما وقتی نمودار رو دستی میخوام رسم کنم و یه دونه متغیر قبلی رو میکشم(L_count=2) شکل کاملا غلط میشه.

      دیدگاه

      لطفا صبر کنید...
      X