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
我有一个向量,例如:
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