Octave 如何将一组点转换为矩阵
我有一个矩阵,所以每列包含一个点的坐标。假设我有以下几点:Octave 如何将一组点转换为矩阵,octave,Octave,我有一个矩阵,所以每列包含一个点的坐标。假设我有以下几点: p1=(1,1) p2=(1,2) p3=(2,3) 那么矩阵将如下所示: 1 1 0 0 0 1 0 0 0 所有坐标都是非负的,但它们是无理的。我将坐标乘以10^15的因子(倍频程的最大精度),并将矩阵传递给以下函数: function MAT = transfer(pairs) for i = 1:length(pairs) x = round(pairs(i,1)); y = round(pair
p1=(1,1)
p2=(1,2)
p3=(2,3)
那么矩阵将如下所示:
1 1 0
0 0 1
0 0 0
所有坐标都是非负的,但它们是无理的。我将坐标乘以10^15的因子(倍频程的最大精度),并将矩阵传递给以下函数:
function MAT = transfer(pairs)
for i = 1:length(pairs)
x = round(pairs(i,1));
y = round(pairs(i,2));
MAT(x,y) = true;
end
end
不幸的是,我得到了一个错误-下标索引必须是正整数或逻辑数。我不知道问题出在哪里,因为我把它们四舍五入,结果是肯定的。如果有人能帮我找到问题,或提供另一种方法进行转换,我将非常高兴,我将不胜感激。沙约尔您的某些坐标可能会舍入为零。这是获得该错误的一种方法。
我会检查一下,在四舍五入后,你们的两个值中是否有一个等于零 我看到的另一个问题是,你可以生成一个10^15x10^15密矩阵。我建议使用稀疏矩阵来生成MAT,而不是for循环。比如说
MAT = sparse(round(pairs(:, 1)), round(pairs(:, 2)), true(rows(pairs), 1))
有些坐标可能会舍入为零。这是获得该错误的一种方法。
我会检查一下,在四舍五入后,你们的两个值中是否有一个等于零 我看到的另一个问题是,你可以生成一个10^15x10^15密矩阵。我建议使用稀疏矩阵来生成MAT,而不是for循环。比如说
MAT = sparse(round(pairs(:, 1)), round(pairs(:, 2)), true(rows(pairs), 1))
这里的问题很简单。倍频程矩阵存储为向量。虽然您使用的一维索引在倍频程的最大精度范围内,但它是一个2D矩阵,最终条目的真实索引将是10^30阶,太大了
尝试使用较小的乘数。也许是10^7,而不是10^15。不过,您可能仍然会耗尽空间,因此我还建议使用稀疏矩阵。这里的问题很简单。倍频程矩阵存储为向量。虽然您使用的一维索引在倍频程的最大精度范围内,但它是一个2D矩阵,最终条目的真实索引将是10^30阶,太大了
尝试使用较小的乘数。也许是10^7,而不是10^15。不过,您可能仍然会耗尽空间,因此我还建议使用稀疏矩阵。我检查了,四舍五入后没有一个坐标为零。我还尝试了稀疏函数,得到了相同的错误。我检查了,四舍五入后没有一个坐标为零。我还尝试了稀疏函数,得到了相同的错误。