我有一个" x1"矩阵,我想提取一些关于逻辑条件的特定元素:
for z=1:length(x1)
if (x1(z+1)-x1(z))>=20)
extract=
end
end
我如何获得"提取物"矩阵和这些值的索引在x1?
答案 0 :(得分:0)
x1
中元素的索引显然是z
本身: z -th元素满足该条件。在extract
我想你要放x1(z)
,这就是价值。但extract
可能包含的元素少于x1
,因此我们需要一个适当的索引来运行extract
,我们称之为k
。
k=1
for z=1:length(x1)-1
if (x1(z+1)-x1(z))>=20)
extract(k)=x1(z); %if you want to extract the value
k=k+1;
end
end
或者,如果要保存x1
的索引而不是值
k=1
for z=1:length(x1)-1
if (x1(z+1)-x1(z))>=20)
extract(k)=z;
k=k+1;
end
end
在此循环结束时,extract
将是一个数组,其中包含满足条件的x1
中元素的所有值(第一个循环)或索引(第二个循环)。
为了完整起见,为了获得两者,我们必须使用两个数组(extract
表示值,indices
表示索引):
k=1
for z=1:length(x1)-1
if (x1(z+1)-x1(z))>=20)
extract(k)=x1(z); % store the value
indices(k)=z; % store the index
k=k+1;
end
end
答案 1 :(得分:0)
您可以使用此代码提取索引
x1Diff = diff(x1)
x1DiffTh = zeros(size(x1Diff))
x1DiffTh[x1Diff>20] = 1
indx = find(x1DiffTh)
或在1行压缩
indx = find(diff(x1)>20)
For循环在Matlab中非常缺乏,因为代码没有编译。