matlab說,「你讀過書,……我便考你一考。fftshift的函數,怎樣寫的?」我想,討飯同樣的人,也配考我麼?便回過臉去,再也不理會。matlab等了許久,很懇切的說道,「不能寫罷?……我教給你,記着!這些代碼未來作程序員的時候,前端要用。」我暗想我和程序員的等級還很遠呢,並且前端歷來用不到圖像處理;又可笑,又不耐煩,懶懶的答他道,「誰要你教,不就是直接調用fftshift麼?」matlab顯出極高興的樣子,將兩個指頭的長指甲敲着櫃檯,點頭說,「對呀對呀!……fftshift的代碼有四樣寫法,你知道麼?」我愈不耐煩了,努着嘴走遠。matlab剛用指甲蘸了酒,想在櫃上寫代碼,見我絕不熱心,便又嘆一口氣,顯出極可惜的樣子。前端
type fftshift.m
直接看fftshift函數: [x, y] = size (V); xx = ceil (x/2); yy = ceil (y/2); retval = V([xx+1:x, 1:xx], [yy+1:y, 1:yy]);
+ 讓咱們來運行對比一下:
+ ??結果居然不同,確定是Matlab暗改了!程序員
nd = ndims (x); sz = size (x); sz2 = ceil (sz ./ 2); idx = repmat ({':'},1,2); for i = 1:nd idx{i} = [sz2(i)+1:sz(i), 1:sz2(i)]; end retval = x(idx{:});
+ 相信本身,必定能成功!
+ 惡膜某蛤秒沒命,必定是我太弱了,代碼寫錯了!函數
nd=2; sz=size(I); n=floor(size(I)/2); idx = repmat ({':'},1,nd); for i = 1:nd; b=n(i); d=sz(i); if(b>0) b=rem(b,d); idx{i}=[d-b+1:d,1:d-b]; elseif(b<0) b=rem(abs(b),d); idx{i}=[b+1:d,1:b]; end end
+ 運行結果:
+ 是在哈輸了!spa
sz = ceil(size(A)/2); A = A([sz(1)+1:end, 1:sz(1)], [sz(2)+1:end, 1:sz(2)]);
+ 打擾了: