我的教学给了我们一个问题,它要求创建一个新数组,其中的值如果为正则为true,如果为负则为false。每次对每个变量检查一个,一旦元素不为零,就应该停止。我不知道如何完成代码,这就是我目前所拥有的:
clc,clear
v=[-13.5 2.5 -32.0 45.0 -23.0 4.25 0.0 0.85 10.0 -1.5];
k3=1;
boolGTZ=v;
while k3<=length(v)&& v(k3)>0
k3=k3+1;
end
如果对应的元素为正,则输出数组将为True,如果元素为负,则为False。如果元素为0,则停止。
如果必须使用while循环,那么代码中唯一真正的区别就是在每个循环中增加boolGTZ
:
v=[-13.5 2.5 -32.0 45.0 -23.0 4.25 0.0 0.85 10.0 -1.5];
k3=1;
boolGTZ=[];
while k3<=length(v) && v(k3)~=0
boolGTZ=[boolGTZ; v(k3) > 0];
k3=k3+1;
end
然而,如果你不必明确地使用循环,MATLAB的矢量功能要容易得多:
v = [-13.5 2.5 -32.0 45.0 -23.0 4.25 0.0 0.85 10.0 -1.5];
v1 = v(1:find(v == 0, 1)-1); % ignore array beyond first 0
boolGTZ = v1>=0; % boolean array that is True if element of v is positive