使用函数 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 在结构化矩阵中达到特定索引的主要内容,如果未能解决你的问题,请参考以下文章