我有一张表,我从中提取每一列被告中最大的元素及其在表格中的位置。
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)中(Loc)(i)的值来存储在每列中的变量是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 :(得分:0)
您的Sample_Targets变量需要是单元格类型,或者是3D数组。
单元格:使用{}表示单元格下标,即Sample_Targets {i,j}
3D数组:使用Sample_Targets(i,j,:) = [....];
注意,后者是唯一可能的,因为在switch语句中总是分配一个大小相同的数组。如果情况不是这样,则选项a)是唯一可能的。