我想使用我自己的myblockproc
函數(代碼如下)在全尺寸圖像的不同塊(子圖像)上添加(或執行一些其他功能的「樂趣」)。在這裏,我用了一個小的5,5,4矩陣作爲測試目的,實際上我必須在四個大尺寸圖像上執行一個函數(不是加法),我的實際圖像的四維尺寸是m,n,4 。下標的分配尺寸不匹配錯誤4
我得到這個錯誤:
Subscripted assignment dimension mismatch.
Error in myblockproc (line 30)
blk(:,:,k)=tmp(tc : tc+a-1 , tr : tr+b-1);
Error in testmyblock (line 19)
CR = myblockproc(I,3,3);
這是我在昏暗5,5,4的我的測試矩陣碼。塊大小是2X2。
function [J] = fun(I)
J=I(:,:,1)+I(:,:,2)+I(:,:,3)+I(:,:,4);
end
function [J] = myblockproc(I,r,c)
[m,n,p]=size(I);
ro=ceil(m/r);
cl=ceil(n/c);
Rr=mod(m,r);
Rc=mod(n,c);
blk=zeros(r,c,p);
for i= 1:ro
a=r;
if i==ro
a=Rr;
end
tc=((i-1)*r)+1;
for j=1:cl
b=c;
if j==cl
b=Rc;
end
tr=((j-1)*c)+1;
for k=1 : p
tmp=I(:,:,k)
blk(:,:,k)=tmp(tc : tc+a-1 , tr : tr+b-1);
end
J=fun(blk);
end
end
function [CR] = testmyblock()
I(:,:,1)=[1 2 3 4 5 ;6 7 8 9 10 ;11 12 13 14 15; 16 17 18 19 20; 21 23 23 24 25];
I(:,:,2)=[1 2 3 4 5 ;6 7 8 9 10 ;11 12 13 14 15; 16 17 18 19 20; 21 23 23 24 25];
I(:,:,3)=[1 2 3 4 5 ;6 7 8 9 10 ;11 12 13 14 15; 16 17 18 19 20; 21 23 23 24 25];
I(:,:,4)=[1 2 3 4 5 ;6 7 8 9 10 ;11 12 13 14 15; 16 17 18 19 20; 21 23 23 24 25];
CR = myblockproc(I,3,3);
end