Arrays 如何在数组Matlab中获得正确的块
我有一些用Matlab编写的代码,我有一个3 x 3的矩阵。如何获得A>th的块数,并将其保存在Matlab中。我只想得到一个值,下一个值是“1”,所以我应该只得到1块是[12],我的代码中有什么错误吗?请帮忙,非常感谢 这是我的密码Arrays 如何在数组Matlab中获得正确的块,arrays,matlab,block,threshold,Arrays,Matlab,Block,Threshold,我有一些用Matlab编写的代码,我有一个3 x 3的矩阵。如何获得A>th的块数,并将其保存在Matlab中。我只想得到一个值,下一个值是“1”,所以我应该只得到1块是[12],我的代码中有什么错误吗?请帮忙,非常感谢 这是我的密码 th = 0.1; A =[1 0.2 0.03; 0.2 1 0.03; 0.2 0.03 1]; index = 0; for i = 1:size(A,1) for j = 1:size(A,2) if i == j
th = 0.1;
A =[1 0.2 0.03; 0.2 1 0.03; 0.2 0.03 1];
index = 0;
for i = 1:size(A,1)
for j = 1:size(A,2)
if i == j
[i j] = find(A > th)
index = index + 1;
hasil = [i j];
end
end
end
如果我运行我的程序,结果是:
(1),(1 2),(2 1),(2 2),(3 1),(3)可用于将线性索引转换为下标
[hasilx,hasily] = ind2sub(size(A), find(A>th));
[hasilx hasily]
ans =
1 1
2 1
3 1
1 2
2 2
3 3
find
还可以直接返回下标:
[hasilx,hasily]=find(A>th);
[hasilx,hasily]=find(A>th)
给出了相同的结果。OP在他们的问题中实际使用了find
,因此我不确定他们其余的代码是做什么的。@David是的,现在我看一下,for循环体中的迭代器已更改。这种行为还没有定义。实际上,我主要查看了请求的输出。谢谢,但我只需要块[12]作为结果。我的代码结果仍然输出[1][2]和[3 3],我不希望值“1”出现。您的循环应该实现什么?并且不应该覆盖循环中的循环索引(i
,j
)。