MATLAB:检测向量中的 plus/minus 符号

MATLAB: Detection of plus/minus signs in vector

我有一个向量,例如:

test = [1 2 -3 -4 -5 -8 1 2 3 -5 -9 -2 3 2 1];

我想检测这个向量中plus/minus符号的变化。我只需要检测标志的变化。例如,如果符号改变了,那么在命令行打印:'Change'。

感谢您的帮助。

有多种可能性可以做到这一点。其中一个不涉及 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。

正如@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