使用函数find matlab在结构化矩阵中获得特定索引
我收到这个错误 尝试引用非结构数组的字段 扰动法中的错误(第136行) [j,k]=find(pop(i).mat.p==x)使用函数find matlab在结构化矩阵中获得特定索引,matlab,matrix,struct,find,Matlab,Matrix,Struct,Find,我收到这个错误 尝试引用非结构数组的字段 扰动法中的错误(第136行) [j,k]=find(pop(i).mat.p==x) pop是结构矩阵(mat)的总体。我想知道矩阵矩阵p部分中特定元素的索引,请问如何处理?显然您忘记了考虑pop(i)。mat是一个单元数组。以下方面应起作用: % Create data structure NP=10; matR=4; matC=4; for i=1:NP for j=1:matR for k=1:matC MAT{j,k}.s
pop是结构矩阵(mat)的总体。我想知道矩阵矩阵p部分中特定元素的索引,请问如何处理?显然您忘记了考虑
pop(i)。mat
是一个单元数组。以下方面应起作用:
% Create data structure
NP=10;
matR=4;
matC=4;
for i=1:NP
for j=1:matR
for k=1:matC
MAT{j,k}.s=randi(8);
MAT{j,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
显然,您忘记考虑到
pop(i).mat
是一个单元数组。以下方面应起作用:
% Create data structure
NP=10;
matR=4;
matC=4;
for i=1:NP
for j=1:matR
for k=1:matC
MAT{j,k}.s=randi(8);
MAT{j,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
嗨,Samia,你能给我们提供更多关于你的数据结构的细节吗?
pop
及其子元素的示例是什么?NP=10;对于i=1:NP对于j=1:matR对于k=1:matC MAT{j,k}.s=randi(8);MAT{j,k}.p=randi(16);端部弹出(i)。垫=垫;嗨,Samia,你能给我们提供更多关于你的数据结构的细节吗?pop
及其子元素的示例是什么?NP=10;对于i=1:NP对于j=1:matR对于k=1:matC MAT{j,k}.s=randi(8);MAT{j,k}.p=randi(16);端部弹出(i)。垫=垫;它很好用谢谢一种乳液很好用谢谢