Multiplying every secound element in a vector with -1

조회 수: 2 (최근 30일)
Jonathan Larsson
Jonathan Larsson 2019년 10월 1일
답변: James Tursa 2019년 10월 3일
Hello I am looking for how to multiply every secound element in vector 1xn with -1, but I want to write this as a function. I can do this manually like this for example with an 1x3 vector;
function vny = byt_tecken(v)
vny=[v(1,1),-v(1,2),v(1,3)]
end
But how do I do this for any given 1xn vector? Thanks!

채택된 답변

John D'Errico
John D'Errico 2019년 10월 1일
편집: John D'Errico 2019년 10월 1일
You need to start learning MATLAB. That is, actually learn to use vectors, matrices, not just work with single numbers, and loops. Until you do, you will continue to have these problems.
Here is one way to do what you asked for. There are surely a zillion others.
v = 1:10;
vny = v.*(mod(1:numel(v),2)*2 - 1)
vny =
1 -2 3 -4 5 -6 7 -8 9 -10
The point is to start thinking in terms of a vector and vector operations, tools that operate on every element of a vector in one call.

추가 답변 (2개)

Daniel M
Daniel M 2019년 10월 3일
Here is another way:
function vny = byt_tecken(v)
vny = v.*-(-1).^(1:numel(v));
end

James Tursa
James Tursa 2019년 10월 3일
Or yet another of the zillion ways
vny = v;
vny(2:2:end) = -vny(2:2:end);

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품


릴리스

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by