执行循环以执行以下操作

时间:2013-05-30 01:26:08

标签: arrays matlab loops

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

1 个答案:

答案 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。)接下来,让我们确定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)您还可以使用NUMXNUMY重新排序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

结束语:目前还不清楚如何在代码中定义mn,因此无法在此处解析您的特定错误消息。