اطلاعیه

Collapse
No announcement yet.

خطا Index exceeds matrix dimensions

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

    خطا Index exceeds matrix dimensions

    سلام دوستان
    یک برنامه نوشتم که جواب میده اما در انتها این خطای Index exceeds matrix dimensions را میدهد
    لطفا کمک کنید که چرا این خطا ایجاد می شود
    با سپاس فراوان

    کد:
    clc;
    clear all;
    E1=181*10^9
    E2=10.3*10^9
    G12=7.17*10^9
    v12=0.28
    sigma1t=1500*10^6
    sigma1c=1500*10^6
    sigma2t=40*10^6
    sigma2c=246*10^6
    sigma12u=68*10^6
    syms r
    sigmax=input('value of sigmax:');
    sigmay=input('value of sigmay:');
    sigmaxy=input('value of sigmaxy:');
    sigmax=sigmax*r
    sigmay=sigmay*r
    sigmaxy=sigmaxy*r
    stressxy=[sigmax;sigmay;sigmaxy]
    theta=60*pi/180
    s=sin(theta)
    c=cos(theta)
    T=[c^2,s^2,2*s*c;s^2,c^2,-2*s*c;-s*c,s*c,c^2-s^2]
    R=[1,0,0;0,1,0;0,0,2]
    S11=1/E1
    S12=-v12/E1
    S22=1/E2
    S66=1/G12
    S=[S11,S12,0;S12,S22,0;0,0,S66]
    Q=inv(S)
    Qbar=inv(T)*Q*R*T*inv(R)
    Sbar=inv(Qbar)
    sigma1=T(1,:)*stressxy
    sigma1=factor(sigma1)
    sigma2=T(2,:)*stressxy
    sigma2=factor(sigma2)
    sigma12=T(3,:)*stressxy
    sigma12=factor(sigma12)
    stress12=[sigma1;sigma2;sigma12]
    r1=-(sigma1c)/(2*3^(1/2) - 7/4):sigma1t/(2*3^(1/2) - 7/4):0.0001
    r2=-(sigma2c)/(- 2*3^(1/2) + 3/4):sigma2t/(- 2*3^(1/2) + 3/4):0.01
    r3=-(sigma12u)/(- (5*3^(1/2))/4 - 2):(sigma12u)/(- (5*3^(1/2))/4 - 2):0.0001
    a=max(r1)
    b=max(r2)
    g=max(r3)
    k=[a,b,g]
    for i=1:1:3
      k(i)&k(i+1)~=0
      if k(i)>k(i+1)
        j=k(i+1)
      else k(i)<k(i+1)
        j=k(i)
      end
    end

    #2
    پاسخ : خطا Index exceeds matrix dimensions

    سلام
    k یک متغییر 3*1 هست و شما توی خط زیر که توی یک حلقه هست
    کد:
     k(i)&k(i+1)~=0
    از i+1 استفاده کردی و وقتی i=3 باشه یعنی حلقه پایانی به آرگومان i+1=4 از k رو میخاد که اشتباهه. باید اینجا رو تصحیح کنی
    موفق باشی
    زندگی یعنی امید و حرکت
    کارهایتان را آغاز کنید، توانایی انجام دادنش را بدست خواهید آورد
    سوالاتی که در انجمن قابل طرح شدن هستند در پیام خصوصی جواب داده نمی شود.
    برای تشکر از دکمه تشکر کنار هر پست استفاده کنید، پست هایی که فقط حاوی تشکر هستند پاک می شوند.
    به دلیل کار بر روی پایاننامه و دفاع، مدتی نیستم!

    دیدگاه


      #3
      پاسخ : خطا Index exceeds matrix dimensions

      متشکرم
      حلقه نوشته شده رو اینجوری تصحیح کردم و درست شد
      for i=1:1:length(k) -1
      با تشکر

      دیدگاه


        #4
        پاسخ : خطا Index exceeds matrix dimensions

        سلام خسته نباشید میشه راهنمایی کنید من خطای این کد چطوری تصحیح کنم؟؟؟؟؟؟؟؟؟؟؟؟؟

        فقط بیزحمت زود


        img = imread('D:\image\roz.png'

        figure;
        subplot(121)
        imshow(img)
        g = mean2(img);
        k=16;
        [h,w]=size(img);
        n = 1;
        for i=1:k:h
        for j=1:k:w
        imblock=img(i:i+k-1,j:j+k-1);
        if nnz(imblock>g)>0
        S(n) = sum(imblock(imblock>g));
        else
        S(n) = k * g;
        end
        n = n+1;
        end
        end
        subplot(122)
        imshow(reshape(S,h/16,w/16)',[],'InitialMagnification','fit&#039


        اینم خطاش:
        Index exceeds matrix dimensions

        دیدگاه


          #5
          پاسخ : خطا Index exceeds matrix dimensions

          با سلام
          در این خط
          imblock=img(i:i+k-1,j:j+k-1);
          اندیسj+k+1 از مقدارw فراتر می رود

          شاید کد زیر مشکلتون رو حل کنه

          for i=1:k:h-k
          for j=1:k:w-k
          imblock=img(i:i+k-1,j:j+k-1);
          if nnz(imblock>g)>0
          S(n) = sum(imblock(imblock>g));
          else
          S(n) = k * g;
          end
          n = n+1;
          end
          end
          http://www.4shared.com/office/wspNnTsI/AMUZESH_JAMEE_MATLAB.html

          دیدگاه


            #6
            پاسخ : خطا Index exceeds matrix dimensions

            اون کدی که شما گفتین هم اعمال کردم ولی باز خطاداد اینم خطا:

            Error using reshape
            Size arguments must be real integers

            دیدگاه


              #7
              پاسخ : خطا Index exceeds matrix dimensions

              با سلام

              این بار مشکل اندازه ماتریس هست

              این کد رو خودتون نوشتید؟
              می خواهید چه کار کنید

              در این کد ابعاد ماتریس باید با ابعاد ماتریس تصویر اصلی مربوط به کد یکی باشند

              http://www.4shared.com/office/wspNnTsI/AMUZESH_JAMEE_MATLAB.html

              دیدگاه


                #8
                پاسخ : خطا Index exceeds matrix dimensions

                سلام

                خودم یکمی نوشتم و ازیکی هم راهنمایی گرفتم چون تو مقاله گفته تصویررو به اندازه بلوک 16*16پیکسل تقسیم کنیم ،میانگین بگیرم درواقع کد رو برای این متن نوشتیم:

                میشه بگید چیکار کنم تا دیگه خطا نده؟؟؟؟

                (1.میانگین تصویر=g
                2.برای هربلوک Bاز اندازه بلوک K*K پیکسل بزرگتر از عدد میانگین که اول میانگین حساب بعد جمع میکنیم ودر داخل Sقرار می دهیم
                3.اگر پیکسلی وجود نداشت S=K*Gکه درآن K اندازه بلوک هستش که ثابت هست
                4.S رو به عنوان ویژگی توی بردار ستونی ذخیره می کنیم
                5. مرحله 2تا4 رو برای بلوک های دیگر هم تکرار می کنیم)

                دیدگاه


                  #9
                  پاسخ : خطا Index exceeds matrix dimensions

                  با سلام مجدد

                  چون کد مقداری حرفه ای نوشته شده ولی خطاهاش ابتدایی تره

                  کدتون رو مقداری عوض کردم

                  کد:
                  img = imread('corn.tif',3);
                  img = imresize(img,[92,112]);
                  k=16;
                  L1 = size(img,1);
                  L2 = size(img,2);
                  
                  L1 = k*fix(L1/k);
                  L2 = k*fix(L2/k);
                  
                  L1_S = L1/k;
                  L2_S = L2/k;
                  
                  img = imresize(img,[L1,L2]);
                  S  = zeros(L1_S,L2_S);
                  figure(1);
                  subplot(121)
                  imshow(img)
                  g = mean2(img);
                  [h,w]=size(img);
                  n = 1;
                  
                  i1 = 0;j1 = 0;
                  
                  
                  for i=1:L1_S
                    for j=1:L2_S
                      nn_i = (1:k)+(i-1)*k;
                      nn_j = (1:k)+(j-1)*k;
                      imblock=img(nn_i,nn_j);
                      if nnz(imblock>g)>0
                        S(i,j) = sum(imblock(imblock>g));
                      else
                        S(i,j) = k * g;
                      end
                    end
                  end
                  subplot(122)
                  imshow(S,[],'InitialMagnification','fit')
                  ولی در مورد میانگین توی مقاله دقت کنید ببینید هر قسمت باید با میانگین کل محاسبه بشه مثل کار شما
                  یا با میانگین بلوک

                  http://www.4shared.com/office/wspNnTsI/AMUZESH_JAMEE_MATLAB.html

                  دیدگاه


                    #10
                    پاسخ : خطا Index exceeds matrix dimensions

                    ولی بازم ارور میده :

                    Error using readpng>parse_args (line 65)
                    Expected BACKGROUNDCOLOR to be one of these types:

                    char

                    Instead its type was double.

                    Error in readpng (line 23)
                    bg = parse_args(varargin{:});

                    Error in imread (line 416)
                    [X, map] = feval(fmt_s.read, filename, extraArgs{:});

                    دیدگاه


                      #11
                      پاسخ : خطا Index exceeds matrix dimensions

                      ایراد در خوندن تصویر هست
                      بجای دو خط اول فایل تصویر خودتون رو قرار بدید
                      img = imread('corn.tif',3);
                      img = imresize(img,[92,112]);

                      http://www.4shared.com/office/wspNnTsI/AMUZESH_JAMEE_MATLAB.html

                      دیدگاه


                        #12
                        پاسخ : خطا Index exceeds matrix dimensions

                        منم همون تصویر خودمو قرار دادم ولی همون خطای قبلی داد.اون عدد3 در سطر اول به چه منظوریه؟؟وبرای اینکه بلوک بندی 16*16 هم پوشانی داشته باشه باید چیکار کنم ؟

                        در ضمن میانگین بلوک گفتین منظورتون چی بود؟؟/

                        دیدگاه

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