0

我正在 psychtoolbox 中创建一个任务,我需要一个光栅。我制作了光栅,它运行良好,但现在我只想通过将这些矩阵元素设置为零来从其中切出一些片段(目前我正在使用掩码,但我想在源中切出片段,光栅本身)。

为了切出我想要的部分,我需要光栅矩阵的索引(称为 A),所以我想我使用 ind2sub。然而,这不起作用:

[I,J] = ind2sub(size(A),A);

'I' 给出与 'A' 相同的值,而 'J' 给出一个(大小(A))

在这里你可以找到 A

例子

这是我想做的一个例子:

% A is a 3x3 matrix
% if I use "[I,J] = ind2sub(size(A),A);" I get the problem as described before: 
% I = A and J = ones(3,3)
% When I use "[I,J] = ind2sub(size(A),[1:numel(A)]);" as suggested, I do get the
% following (which is a vector but can be reshaped into a 3x3 matrix):
I = [1 1 1 2 2 2 3 3 3]
J = [1 2 3 1 2 3 1 2 3]
I = reshape(I,[3,3]);
J = reshape(J,[3,3]);

K = I + J; % = [2 3 4; 3 4 5; 4 5 6]
for i=1:length(A)
for j=1:length(A)
if K(i,j)>*some threshold*
A(I(i),J(i))=0
end
end
end
4

2 回答 2

0

好的,我想我得到了我想要的方式:

[I,J] = ind2sub(size(A),[1:numel(A)]);
I = reshape(I,size(A));
J = reshape(J,size(A));
K = I + J;
for i=1:length(A)
for j=1:length(A)
if K(i,j)<halfWidthOfGrid %predefined threshold
   A(i,j)=0;
end
end
end

我想我应该更清楚我想从光栅中切出什么。我想切掉所有的边缘(所以让它更像扑克牌中的钻石)。由于我要切掉三角形,所以我可以说 A(i,j) 中 'i' 和 'j' 的总和不应超过阈值

于 2015-03-06T14:12:34.747 回答
0

似乎您想要的是数组中每个条目的索引 i,j 。然后这样做:

  A = ones(2,3); % <-- dummy data
  [I,J] = ind2sub(size(A),[1:numel(A)]);

那么结果是

 I =

   1   2   1   2   1   2

J =

   1   1   2   2   3   3
于 2015-03-06T08:55:21.423 回答