如何将数组的坐标对组合成单个索引?

时间:2017-02-02 11:46:56

标签: arrays matlab

我有一个数组

def main():
    root = Tk()
    CarParkGui(root)
    root.mainloop()


main()

有没有办法可以将数组的所有坐标对转换为线性索引,以便:

A = [3, 4; 5, 6; 4, 1];

其中(3,4),(5,6)和(4,1)分别由1,2和3表示。 非常感谢!

我需要的原因是因为我需要循环遍历数组A,以便我可以使用每个坐标对(3,4),(5,6)和(4,1) ) 同时。这是因为我需要将这些对中的每一对都送入一个函数,以便进行另一次计算。请参阅下面的伪代码:

A = [1, 2, 3]'

for ii = 1: length(A); [x, y] = function_obtain_coord_pairs(A); B = function_obtain_fit(x, y, I); end ii = 1x=3。下一次迭代将使用y=4x=5等对

基本上会发生什么是我的kx2数组将被转换为kx1数组。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

以下是您的代码的更正版本:

A = [3, 4; 5, 6; 4, 1];
for k = A.'
    B = function_obtain_fit(k(1),k(2),I)
end

通过直接在A上进行迭代,您会遍历A的列。因为您要遍历行,我们需要A.'。因此,如果我们只显示k,则为:

for k = A.'
    k
end

输出是:

k =
     3
     4
k =
     5
     6
k =
     4
     1

答案 1 :(得分:0)

调整你的代码,你想要的是@Ander在评论中建议的......

您的代码

for ii = 1:length(A);
    [x, y] = function_obtain_coord_pairs(A);
    B      = function_obtain_fit(x, y, I);
end

改编代码

for ii = 1:size(A,1);
    x = A(ii, 1);
    y = A(ii, 2);
    B = function_obtain_fit(x, y, I); % is I here supposed to be ii? I not defined...
end

您不熟悉索引会让我觉得您的function_obtain_fit函数可能会被矢量化以接受整个矩阵A,但那是另一天的问题!

例如,您根本不需要定义xy ...

更好的代码

for ii = 1:size(A,1);
    B = function_obtain_fit(A(ii, 1), A(ii, 2), I);
end