簡體   English   中英

下標的分配尺寸不匹配錯誤4

[英]Subscripted assignment dimensions mismatch error 4

我想使用我自己的myblockproc函數(在下面給出代碼)在全尺寸圖像的不同塊(子圖像)上添加(或執行一些其他功能“有趣”)。 在這里,我使用了一個昏暗的5,5,4小矩陣進行測試,實際上我必須對m,n的四幅大尺寸圖像執行功能(而不是加法),而我的實際圖像的尺寸為m,n,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

我不確定這些功能是否在同一文件中,但我希望不會,因為那樣的話您可能會遇到另一個錯誤。 盡管要記住,matlab中的標准方法是所有子函數都應出現在調用它們的函數下方。

但是,出現此錯誤的原因是對於某些ksize( blk(:, :, k) ) ~= size( tmp(tc:tc+a-1, tr:tr+b-1) ) 我很難解決這個問題,因為我不知道您到底在做什么,因此無法說出如何修改向量的長度。 例如,我確實不知道它是blk還是tctr ,...這是不正確的。

解決此問題的最佳方法是使用調試器 在發生錯誤的行上設置一個斷點,或將調試器設置為在發生錯誤時停止(通過鍵入dbstop error或從菜單中設置斷點)。 在這里,您可以檢查blk的大小並與tctr ,...進行比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM