-1

考虑一个大小为 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

4

1 回答 1

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.)接下来,让我们确定 和 的数量xy以使用您的问题的命名法:

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) 您还可以使用NUMXandNUMY重新排序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在您的代码中,因此您的具体错误消息无法在此处解决。

于 2013-05-30T12:29:25.643 回答