MATLAB:检测向量中的正/负号

时间:2016-03-09 18:20:08

标签: matlab vector detection

我有一个矢量,例如:

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

我想在此向量中检测正/负号的变化。我只需要检测标志的变化。例如,如果符号已更改,则在命令行上打印:'更改'。

感谢您的帮助。

2 个答案:

答案 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