shift.m
上传用户:look542
上传日期:2009-06-04
资源大小:784k
文件大小:1k
源码类别:

传真(Fax)编程

开发平台:

Matlab

  1. % Program 5-4
  2. % shift.m
  3. %
  4. % Shift the contents of the register.
  5. %
  6. % Programmed by M.Okita and H.Harada
  7. %
  8. function [outregi] = shift(inregi,shiftr,shiftu)
  9. % ****************************************************************
  10. % inrege     : Vector or matrix
  11. % shiftr     : The amount of shift to the right.
  12. % shiftu     : The amount of shift to the top.
  13. % outregi    : Register output
  14. % ****************************************************************
  15. [h, v]  = size(inregi);
  16. outregi = inregi;
  17. shiftr = rem(shiftr,v);
  18. shiftu = rem(shiftu,h);
  19. if shiftr > 0
  20.     outregi(:,1       :shiftr) = inregi(:,v-shiftr+1:v       );
  21.     outregi(:,1+shiftr:v     ) = inregi(:,1         :v-shiftr);
  22. elseif shiftr < 0
  23.     outregi(:,1         :v+shiftr) = inregi(:,1-shiftr:v      );
  24.     outregi(:,v+shiftr+1:v       ) = inregi(:,1       :-shiftr);
  25. end
  26. inregi = outregi;
  27. if shiftu > 0
  28.     outregi(1         :h-shiftu,:) = inregi(1+shiftu:h,     :);
  29.     outregi(h-shiftu+1:h,       :) = inregi(1       :shiftu,:);
  30. elseif shiftu < 0
  31.     outregi(1       :-shiftu,:) = inregi(h+shiftu+1:h,       :);
  32.     outregi(1-shiftu:h,      :) = inregi(1         :h+shiftu,:);
  33. end
  34. %******************************** end of file ********************************