首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在矢量Matlab中检查细胞的邻域

在矢量Matlab中检查细胞的邻域
EN

Stack Overflow用户
提问于 2013-08-15 16:27:59
回答 1查看 393关注 0票数 0

我有两个向量

代码语言:javascript
复制
K=[1 1 1 2 1 2 1 4 2 10 4 5 1] 

代码语言:javascript
复制
L=[2 0 1 2 1 2 1 3 2 0 1 2 1]

我想将每个向量中的第7个元素的值与这个值的邻域进行比较,其中相邻的5个元素在每个边的元素旁边。因此,对于K,第七个元素是1,而邻居是1 1 1 2 1 2 (左邻居)和4 2 10 4 5 1 (右邻居)。

对于L,第七个元素是1,而邻居是2 0 1 2 1 2 (左邻居)和3 2 0 1 2 1 (右邻居)。如果7值与其每个邻居之间的差值超过了某一阈值,那么我将做一些事情,例如X=1,如果不是,我将做另一件事情,例如X=2

所以在我的例子中,我将阈值设置为3,对于K,第7元素值是1,它和它的两个邻居10,5之间的差异大于阈值3,所以X将是1。对于L,第5元素值是1,它和它的所有邻居之间的差值小于阈值3,所以X将是2。所以我想知道是否有人能帮助我完成这个条件,我不确定这是否可以通过循环来节省时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-15 17:50:15

可以使用anyor检查此条件:

代码语言:javascript
复制
N = 5; % reference index
T = 3; % threshold

V = L; % used to pass the vector L to the if-statement
% V = K;

% formulate if-statement to check for values
% below/above index N and check if any difference
% exceeds the threshold
% the or-statement (because it does not matter if the 
% threshold is exceeded above index N or below)
% is expressed as |

if any((V(1:N-1)-V(N))>T) | any((V(N+1:end)-V(N))>T)
    X = 1;
else
    X = 2;
end

备注

取决于您的Matlab版本,V(1:N-1)-V(N)将无法工作,因为矩阵尺寸不一致。在本例中使用:V(1:N-1)-ones(size(V(1:N-1))).*V(N)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18257161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档