我有一个矢量,例如:
test = [1 2 -3 -4 -5 -8 1 2 3 -5 -9 -2 3 2 1];
我想在此向量中检测正/负号的变化。我只需要检测标志的变化。例如,如果符号已更改,则在命令行上打印:'更改'。
感谢您的帮助。
答案 0 :(得分:3)
有很多可能性。其中一个不涉及for
循环的是:
test = [1 2 -3 -4 -5 -8 1 2 3 -5 -9 -2 3 2 1] % Original vector
signs = sign(test); % Get vector signs
diff = signs(2:end) - signs(1:end-1); % Compute difference between
% successive values
indices = find(diff ~= 0) + 1; % Get indices of sign changes
变量indices
的值为3,7,10和13。
答案 1 :(得分:1)
正如@lodestar所说,有很多方法可以做到这一点。如果您要在命令提示符下显示某些内容,那么您应该查看disp
。例如:
>> arrayfun(@(x)disp(['Change at ', num2str(x+1)]),find((test(1:end-1).*test(2:end))<0))
Change at 3
Change at 7
Change at 10
Change at 13