Use of Circshift command : possible bug.

조회 수: 11 (최근 30일)
Pragya Srivastava
Pragya Srivastava 2017년 2월 14일
댓글: Pragya Srivastava 2017년 2월 14일
Hi, I am using circshift to periodically shift a 2d array. According to MATLAB documentation https://uk.mathworks.com/help/matlab/ref/circshift.html
circshift(A,[degree,dim])
shifts A by degree along dim. This works when dim=1 : I get expected result of circshift(A,[degree,1]) But for dim=2 I need to switch i.e. I have to use circshift(A,[2,degree]) to get desired result. I am using MATLAB 2016a. Please have a look.

채택된 답변

John D'Errico
John D'Errico 2017년 2월 14일
편집: John D'Errico 2017년 2월 14일
Funny, that is NOT how the documentation describes it. Here is the pertinent section:
B = circshift(A,[1 -1]) % circularly shifts first dimension values
% down by 1 and second dimension left by 1.
If the second argument is a TWO element vector, then the one of the elemnts is NOT the dimension. The first element tells how far to shift in dimension 1. The second element tells how far to shift in dimension 2.
If you wish to specify a circular shift dimension dim by extent k, then use THREE arguments.
circshift(A,k,dim)
So there is a bug, but it is in your reading of the help for circshift. The help itself accurately describes what the code does.
  댓글 수: 1
Pragya Srivastava
Pragya Srivastava 2017년 2월 14일
Okay. Thanks for clarification. I was misreading [1 2] to be 1,2.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by