使用函数 find matlab 在结构化矩阵中达到特定索引

Posted

技术标签:

【中文标题】使用函数 find matlab 在结构化矩阵中达到特定索引【英文标题】:reach a specific index in a structered matrix with the function find matlab 【发布时间】:2021-06-09 20:51:43 【问题描述】:

我收到此错误 尝试去引用非结构数组字段 perturb_method 中的错误(第 136 行) [j,k]=find(pop(i).mat.p==x) pop 是一组 structred matix (mat) 我想知道矩阵 mat 部分 p 中特定 elemnet 的索引,请问我该如何处理?

【问题讨论】:

您好 Samia,您能否向我们提供有关您的数据结构的更多详细信息? pop 及其子元素的外观示例? NP = 10;对于 i =1:NP 对于 j=1:matR 对于 k=1:matC MATj,k.s=randi(8);垫j,k.p=兰迪(16); end end pop(i).mat=MAT; 【参考方案1】:

显然你忘了考虑pop(i).mat 是一个元胞数组。以下应该有效:

% Create data structure
NP=10;
matR=4;
matC=4;
for i=1:NP
  for j=1:matR
    for k=1:matC
      MATj,k.s=randi(8);
      MATj,k.p=randi(16);
    end
  end
  pop(i).mat=MAT;
end

% Find `x' in data
x=5;
for i=1:NP
  q=[pop(i).mat:];
  [j,k]=ind2sub(size(pop(i).mat),find([q.p]==x)), %we could use reshape() here instead
end

但是,如果可能的话,您可能需要考虑简化您的程序:

% Create data structure
NP=10;
matR=4;
matC=4;
s=randi(8,[matR matC NP]);
p=randi(16,[matR matC NP]);

% Find `x' in data
x=5;
for i=1:NP
  [j,k]=find(p(:,:,i)==x),
end

【讨论】:

以上是关于使用函数 find matlab 在结构化矩阵中达到特定索引的主要内容,如果未能解决你的问题,请参考以下文章

Matlab中find()寻找函数的常见用法

Matlab中find()寻找函数的常见用法

matlab中常用的函数

求大神解答find函数

matlab-常用函数

matlab 求出一维矩阵中最小值,且求出该最小值在矩阵中的位置,求各位帮帮忙