我有这样的代码:
[X, Y, Z]= meshgrid(0:5:50, 0:5:50, 0:3:3);
[t1, t2, t3]= meshgrid(35, 25, 3);
A=sqrt((X - t1).^2 + (Y - t2).^2 + (Z - t3).^2);
[rows1,cols1,pages1] = ind2sub(size(A), find(A<=5));
for i=1:1:length(rows1);
[R1, R2, R3]= meshgrid(cols1(i)*5-5, rows1(i)*5-5, pages1(i)*3-3);
[reader]=[R1, R2, R3]
B=sqrt((X1 - R1).^2 + (Y1 - R2).^2 + (Z1 - R3).^2);
[rowsB,colsB,pagesB] = ind2sub(size(B), find(B<=5));
for j=1:1:length(rowsB);
[T1, T2, T3]= meshgrid(colsB(j)*0.2-0.2+0.15, rowsB(j)*0.2-0.2+0.15, pagesB(j)*3-3);
[tag]=[T1, T2, T3];
end
end
我需要获得“for”循环的所有结果,因为需要对这些结果应用“intersec”。但是我面临着问题,因为“for”会覆盖结果而我只接受最后一次。如何使smth像
[tag(i)]=[T1, T2, T3] where i is i=1:1:length(rows1).
我已经预先分配了smth但是没有工作。
答案 0 :(得分:2)
通常你可以使用单元格数组:
tag = cell(length(rows1),1);
for i=1:length(rows1)
tag{i} = [T1, T2, T3];
end
虽然它看起来像一个简单的矩阵..
答案 1 :(得分:0)
为了将向量分配给矩阵的行,您需要使用冒号对列索引进行切片。像这样:
tag = zeros(length(rows1), 3);
for i = 1:length(rows1)
...
tag(i, :) = [T1, T2, T3];
end
编辑:修复我的例子。我误读了你的代码。以上是更一般的。