在倍频程中编写校验码和for循环,以检查向量的最大差值

Writing check codes and for loops in octave to check max differences of vectors

提问人:Michaela Schnell 提问时间:11/10/2023 最后编辑:Michaela Schnell 更新时间:11/11/2023 访问量:31

问:

我用八度音程编写了以下代码,其中 cb1-cb27 是向量,我想检查每个向量之间所有可能的差异。然后我想检查它们之间的最大差异是什么。如果最大差值为 <= 1,那么我希望检查停止并告诉我。我想知道是否可以将最大值为 1 的差分向量放入新矩阵中。到目前为止,我所拥有的还没有完全起作用,想知道是否有人有任何提示。我基本上没有八度的经验。这是针对个人研究项目,而不是家庭作业。

X = [cb1(:), cb2(:), cb3(:), cb4(:), cb5(:), cb6(:), cb7(:), cb8(:), cb9(:), cb10(:),       cb11(:), cb12(:), cb13(:), cb14(:), cb15(:), cb16(:), cb17(:), cb18(:), cb19(:), cb20(:), c.   b21(:), cb22(:), cb23(:), cb24(:), cb25(:), cb26(:), cb27(:)];
    Y = zeros(size(X,1),size(X,2),size(X,2));
        for j = 1:size(X,2)
            for k = 1:size(X,2)
Y(:,j,k) = abs(X(:,j) - X(:,k));
    end
end

 T=zeros(size(X,2), size(X,2));
    for j= 1:size(X,2)
        for k=1:size(X,2)
            T(j,k)=max(Y(:,j,k));
                if j==k
                    T(j,k)=10;
        end
          end
             end

min(min(T))

check=0;
for j=1:
    for k= 1: 
        if max(Y(:j,k)) <= 1
            check =1;
            check

有关我尝试过的内容,请参阅上面的代码。

for 循环 矢量 倍频程

评论

0赞 Cris Luengo 11/10/2023
“如果最大差值为 <= 1,那么我希望检查停止” 一旦你检查了所有差值以找出最大差值是多少,还有什么可以停止的?请编辑您的帖子以阐明您想要完成的任务。另外,请说明要对向量使用哪种距离度量。我期望欧几里得距离,但你构建的只是一个元素方面的差异。Y
0赞 Michaela Schnell 11/11/2023
我相信我正在尝试做元素方面的差异。我正在研究编码理论,我的向量是码字。我想看看我的密码本中是否有任何单词彼此之间的距离在 1 以内,因为这意味着如果存在对手,它们可能会被覆盖。
0赞 Cris Luengo 11/11/2023
所以你想看看是否有任何两个码字没有相差一个以上的代码?因此,您要计算每对,并且您找到的第一个对要停止比较,因为这是您将要使用的对。你不想比较其余的货币对吗?max(abs(cb1-cb2))<=1
0赞 Michaela Schnell 11/11/2023
我确实想比较其余的货币对,所以也许我不希望它停止。我想我希望它生成一个包含所有差异的新矩阵,这些差异<=1。

答:

0赞 Cris Luengo 11/11/2023 #1

您可以按如下方式计算没有循环的差分矩阵:Y

Y = permute(X, [2,3,1]) - permute(X, [3,2,1]);

这有沿 3 维的向量,稍后会很方便。这确实将向量与自身进行比较,并且还将每对进行比较两次。

现在我们要计算每个向量对的最大绝对差:

T = max(abs(Y), [], 3);

现在是向量和 之间的最大绝对差。T(i,j)X(:,i)X(:,j)

要找出哪些差值不大于 1,只需比较: 。 我们可以使用 或 删除重复的条目和对角线:T<=1triltriu

T = triu(T <= 1, 1);

如果您需要向量对的索引,请结合使用:findind2sub

[i, j] = ind2sub(size(T), find(T));

现在 和 是一对满足差值约束的向量。X(:,i[p])X(:,j[p])