考虑一个大小为m * n的区域。这里m和n的大小是未知的。现在我从该区域的每个点提取数据。我正在扫描首先沿x方向前进到m点的区域,然后再次返回到m = 0和n = 1,即第二行。我再次沿x方向扫描直到m的结束。下面显示了数据的一个例子。在这里,我获得扫描期间不同x,y坐标的值。我可以通过
在x方向的前两点之间进行操作p1 = A{1}; %%reading the data from the text file
p2 = A{2};
LA=[p1 p2];
for m=1:length(y)
p= LA(m,1);
t= LA(m,2);
%%and
q=LA(m+1,1)
r=LA(m+1,2)
我想对y轴做同样的事情。那就是我想在x = 0和y = 1的第一个点之间操作,然后在x = 2和y = 1之间操作,依此类推。希望你能得到它。
g x y
2 0 0
3 1 0
2 2 0
4 3 0
1 4 0
2 m 0
3 0 1
2 1 1
4 2 1
5 3 1
.
.
.
.
2 m 1
现在我在考虑一个逻辑,我将首先通过计算零的数量来找到n的大小
NUMX = 0;
while y((NUMX+1),:) == 0
NUMX = NUMX + 1;
end
NU= NUMX;
然后我考虑应用以下循环
for m=1:NU:n-1
%%and
p= LA(m,1);
t= LA(m,2);
%%and
q=LA(m+1,1)
r=LA(m+1,2)
但它显示错误。请帮忙!!
??? Attempted to access del2(99794,:); index out of bounds because
size(del2)=[99793,1].
这里NUMX = 198
答案 0 :(得分:0)
评论:您的问题中的术语不一致,因此很难理解您在做什么。您在错误消息中提到的变量del2
无处可见。
1。)让我们从创建一个最小的工作示例开始,该示例说明了数据结构并提供了我们想要稍后检索的维度的知识。您的矩阵不是m x n
而是m*n x 3
以下示例将设置一个矩阵,其数据类似于您在问题中显示的数据:
M = zeros(8,3);
for J=1:4
for I=1:2
M((J-1)*2+I,1) = rand(1);
M((J-1)*2+I,2) = I;
M((J-1)*2+I,3) = J-1;
end
end
M =
0.469 1 0
0.012 2 0
0.337 1 1
0.162 2 1
0.794 1 2
0.311 2 2
0.529 1 3
0.166 2 3
2。)接下来,让我们确定x
和y
的数量,以使用您的问题的命名法:
NUMX = 0;
while M(NUMX+1,3) == 0
NUMX = NUMX + 1;
end
NUMY = size(M,1)/NUMX;
NUMX =
2
NUMY =
4
3。)您想要做的数据处理仍然不清楚,但这里有两种可用于不同方法的方法:
(a)
COUNT = 1;
for K=1:NUMX:size(M,1)
A(COUNT,1) = M(K,1);
COUNT = COUNT + 1;
end
在这种情况下,您将逐步浏览M
的第一列,其步长与NUMX
相对应。这将导致x=1
的所有值:
A =
0.469
0.337
0.794
0.529
(b)您还可以使用NUMX
和NUMY
重新排序M
:
for J=1:NUMY
for I=1:NUMX
NEW_M(I,J) = M((J-1)*NUMX+I,1);
end
end
NEW_M =
0.469 0.337 0.794 0.529
0.012 0.162 0.311 0.166
矩阵NEW_M
现在的大小为m x n
,列中的值为常量y
,行中的值为x
。
结束语:目前还不清楚如何在代码中定义m
和n
,因此无法在此处解析您的特定错误消息。