【发布时间】:2015-07-20 05:23:24
【问题描述】:
我想比较矩阵 X 中的所有单元格坐标,以便将每个单元格与另一个称为 Yint 的矩阵中的所有坐标进行比较(Yint 包含两列和 65 行,每列代表坐标 (x,y)一个单元格)。
如果 X 中一个单元格的坐标等于 Yint 中的任何坐标,则将 1 否则 0 存储在称为标签的第三个矩阵中。
Yint 中的第 33 行只是 Yint 矩阵中的一个标志,这就是我忽略它的原因。
问题是标签矩阵总是给我零。我认为我的代码有问题。知道 X 中有一些值应该满足条件并将 1 存储在标签矩阵中。
labels = zeros(65536, 1);
Yint= round (Y);
counter=1;
for row = 1:1:rows
for col = 1:1:cols
pointer=1;
for pointer=1:1:65
if (isequal(row , Yint(pointer,1)) && isequal(col , Yint(pointer,2)) && pointer ~= 33)
labels(counter) = 1;
else
labels(counter) = 0;
end
end
counter=counter+1;
end
end
矩阵行 X 列:
因特:65 X 2
X:256 X 256
标签:65536 X 1
一个简化的例子:
X = [3 5 3;
2 7 4;
1 7 2]
Yint = [1 1;
2 3;
3 3]
标签矩阵可以看成:
labels = [1 0 0;
0 0 1;
0 0 1]
但是,我们希望它是一个向量 (9x1),我们得到的是:
labels = [1;
0;
0;
0;
0;
1;
0;
0;
1]
【问题讨论】:
-
比较标准是什么?请详细说明
if条件应该 表达的内容,因为这肯定是问题所在。 -
我更新了问题。
-
对不起,我还是不清楚,你能举一个输入数据的例子和你想要得到的输出吗?
-
好的,我们想在心脏中找到左心室,所以输入是心脏图像(X),我们已经知道左心室的坐标(Yint),目标是搜索X 中的这些坐标,如果找到,则将 1 存储在矩阵标签 65536x1(X 的所有坐标按线性顺序)中,否则为 0。
-
第 33 行用于区分心内膜和心外膜轮廓。
标签: matlab