【问题标题】:Subscripted assignment dimension mismatch in matlab with swich casematlab中带有switch case的下标赋值维度不匹配
【发布时间】:2014-01-23 02:47:12
【问题描述】:

我有一个表格,我从中提取被告人每列中最大的元素以及他在表格中的位置。

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,其中取决于 (1-10) 中的 (Locations (i, j)) 的值存储在每一列中是一个变量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

每次我得到同样的错误:

下标分配维度不匹配。

我能做什么?

【问题讨论】:

  • 请提供可以重现您的问题的代码,包括所有变量的初始化。
  • 这都是我的朋友。

标签: matlab


【解决方案1】:

您的 Sample_Targets 变量必须是单元格类型,或者是 3D 数组。

  • 单元格:使用 {} 作为单元格下标,即 Sample_Targets{i,j}

  • 3D 数组:使用 Sample_Targets(i,j,:) = [ .... ];

注意,后者是唯一可能的,因为在你的 switch 语句中你总是分配一个相同大小的数组。如果情况并非如此,则选项 a) 是唯一可能的。

【讨论】:

    猜你喜欢
    • 2013-05-30
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    相关资源
    最近更新 更多