【发布时间】:2019-02-13 09:30:20
【问题描述】:
我已经为此苦苦挣扎了一段时间。例如,我有一个小矩阵 s 和一个更大的矩阵 B,如下所示。
B =
0 0 0 0 0 0 1 1
1 1 0 0 1 0 1 1
1 1 0 1 0 0 1 1
1 1 1 0 0 0 1 0
0 0 1 1 1 0 0 1
0 0 0 1 1 1 1 1
1 1 1 0 0 0 1 0
0 1 1 0 1 1 0 0
s =
1 1
1 1
我想要做的是用s 遍历B 并比较这些值。如果s 中的所有值都等于B 中的值(B 的一小部分),则答案为 1,否则为 0。
1's 和 0's 也将被放置在一个矩阵中。
这是我到目前为止所做的,但不幸的是,它不会逐步迭代,也不会创建矩阵。
s = ones(2,2)
B = randi([0 1],8,8)
f = zeros(size(B))
[M,N]=size(B); % the larger array
[m,n]=size(s); % and the smaller...
for i=1:M/m-(m-1)
for j=1:N/n-(n-1)
if all(s==B(i:i+m-1,j:j+n-1))
disp("1")
else
disp("0")
end
end
end
任何帮助将不胜感激!
【问题讨论】:
-
您没有得到足够的步数,因为您要除以较小数组的大小,这是不正确的。 (计算顶行和最左列应该有多少步,看看这些应该是什么。)此外,您永远不会为输出矩阵
f分配任何值。你真的需要使用循环吗?这将是使用conv2的一行。