2014-01-22 58 views
0

我有一張表格,我從中提取每列被告的最大元素和他在表格中的位置。matlab中的下標賦值維度不匹配與開關案例

Max = max(ARRAY,[],1); for i=1:1 for j=1:30 [X,Y] = find(ARRAY == Max(i,j)); Locations(i,j)=X; end end

我希望得到一個表Sample_Targets (i, j) 10 * 30其中根據(位置(I,J))爲(1-10)的值中的每一列來存儲是type A = [1;0;0;0;0; 0;0;0;0;0];

for i=1:1 
for j=1:30 
    switch Locations(i,j) 
      case {1} 
       Sample_Targets(i,j) = [1;0;0;0;0;0;0;0;0;0]; 
      case {2} 
       Sample_Targets(i,j) = [0;1;0;0;0;0;0;0;0;0]; 
      case {3} 
       Sample_Targets(i,j) = [0;0;1;0;0;0;0;0;0;0]; 
      case {4} 
       Sample_Targets(i,j) = [0;0;0;1;0;0;0;0;0;0]; 
      case {5} 
       Sample_Targets(i,j) = [0;0;0;0;1;0;0;0;0;0]; 
      case {6} 
       Sample_Targets(i,j) = [0;0;0;0;0;1;0;0;0;0]; 
      case {7} 
       Sample_Targets(i,j) = [0;0;0;0;0;0;1;0;0;0]; 
      case {8} 
       Sample_Targets(i,j) = [0;0;0;0;0;0;0;1;0;0]; 
      case {9} 
       Sample_Targets(i,j) = [0;0;0;0;0;0;0;0;1;0]; 
      case {10} 
       Sample_Targets(i,j) = [0;0;0;0;0;0;0;0;0;1]; 
     end  
    end 
    end 
可變

每當我得到相同的錯誤:

下標的分配維度不匹配。

我該怎麼辦?

+0

請提供允許重現您的問題的代碼,包括初始化所有變量。 – Daniel

+0

這是我所有的朋友。 – Lateras

回答

0

您的Sample_Targets變量需要是單元格類型,或者是3D數組。

  • 細胞:使用{}爲細胞標,即Sample_Targets {I,J}

  • 3D陣列:使用Sample_Targets(I,J,:) = [...];

請注意,後者是唯一可能的,因爲在您的switch語句中,您總是分配一個相同大小的數組。如果不是這樣,選項a)是唯一可能的。

+0

非常感謝。它適用於細胞。 :-) – Lateras

相關問題