شیفت دایره ای (جابجایی دایره ای - Circularly Shift) ردیف ها (Row) یا ستون های (Column) یک ماتریس، با دستور circshift ، در متلب (MATLAB)
دستور circshift در متلب (MATLAB)، برای ایجاد شیفت دایره ای (جابجایی دایره ای - Circularly Shift) در ردیف ها (Row) یا ستون های (Column) یک ماتریس و یا هر دوی آنها، به کار می رود.
منظور از شیفت دایره ای (جابجایی دایره ای - Circularly Shift) ردیف ها (Row) یا ستون های (Column) یک ماتریس، این است که به عنوان مثال، اگر یک ماتریس با 3 ردیف داشته باشیم، برای شیفت دایره ای (جابجایی دایره ای - Circularly Shift) ردیف های (Row) آن به اندازه 1 واحد (1 واحد مثبت)، ردیف شماره 1 به جای ردیف شماره 2 و ردیف شماره 2 به جای ردیف شماره 3 و ردیف شماره 3 که ردیف آخر ماتریس است، به جای ردیف شماره 1 (ردیف اول ماتریس) قرار می گیرد. در واقع هر ردیف، یکی به جلو می رود و ردیف هایی که به عنوان ردیف آخر قرار می گیرند، به ابتدای ماتریس آمده و به جای ردیف اول ماتریس قرار خواهند گرفت.
حال اگر شیفت دایره ای (Circularly Shift) به اندازه 2 واحد (2 واحد مثبت) باشد، دو بار این جابجایی صورت می گیرد. اگر هم واحد به صورت منفی (مثلا 1- یا 2-) باشد، آنگاه جابجایی ردیف ها (Row) در جهت برعکس می باشد. اگر واحد را برابر عدد 0 در نظر بگیریم، هیچگونه تغییری داده نمی شود.
شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ستون های (Column) یک ماتریس نیز مشابه همان مورد مربوط به ردیف ها (Row) می باشد و تنها این تفاوت را دارد که شیفت دایره ای (Circularly Shift) در جهت ستون ها (Column) خواهد بود (ستون ها جابجا می شوند).
ایجاد شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ردیف های (Row) یک ماتریس :
اگر بخواهیم که به اندازه 1 واحد، شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ردیف های (Row) یک ماتریس با نام A داشته باشیم و نتیجه را در ماتریسی با نام B ذخیره کنیم، به هر یک از دو شکل زیر می توانیم دستور circshift را به کار ببریم (نتایج یکسان دارند) :
که در کد دوم، واحد 1 برای شیفت دایره ای (Circularly Shift) در جهت ردیف ها (Row) و واحد 0 برای شیفت دایره ای (Circularly Shift) در جهت ستون ها (Column) می باشد (بنابراین شیفت برای ستون ها اتفاق نمی افتد).
مثال های زیر چگونگی ایجاد شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ردیف های (Row) یک ماتریس را نشان می دهد :
شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ردیف ها (Row)، به اندازه 1 واحد :
سه خط اول کدها برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
نتیجه :
شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ردیف ها (Row)، به اندازه 1 واحد :
نتیجه :
شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ردیف ها (Row)، به اندازه 1- واحد (در واقع 1 واحد در جهت برعکس) :
نتیجه :
ایجاد شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ستون های (Column) یک ماتریس :
چنانچه بخواهیم که به اندازه 1 واحد، شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ستون های (Column) یک ماتریس با نام A داشته باشیم و نتیجه را در ماتریسی با نام B ذخیره کنیم، کدهای زیر را می نویسیم :
که در آن، واحد 0 برای شیفت دایره ای (Circularly Shift) در جهت ردیف ها (Row) و واحد 1 برای شیفت دایره ای (Circularly Shift) در جهت ستون ها (Column) می باشد (بنابراین شیفت برای ردیف ها اتفاق نمی افتد).
مثال های زیر چگونگی ایجاد شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ستون های (Column) یک ماتریس را نشان می دهد :
شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ستون ها (Column)، به اندازه 1 واحد :
نتیجه :
شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ستون ها (Column)، به اندازه 2 واحد :
نتیجه :
ایجاد شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ردیف ها (Row) و ستون های (Column) یک ماتریس :
مثال زیر چگونگی ایجاد شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ردیف ها (Row) و ستون های (Column) یک ماتریس را نشان می دهد :
شیفت دایره ای (جابجایی دایره ای - Circularly Shift) برای ردیف ها (Row)، به اندازه 2 واحد و برای ستون ها (Column) به اندازه 1 واحد :