필터 지우기
필터 지우기

Use if / else inside a for-loop and change values of array depending on condition

조회 수: 7 (최근 30일)
Hi all,
I am stuck with the following step and I can't find the solution. The code I need is to change the columns of an array depending on the column index. For odd numbers, without change, for even numbers change the sign.
The size of the array should be variable by dimensions 1 and 2.
Here is what I tryied. Can someone help me please.
Thanks
Size_1 = 5;
Size_2 = 6;
array = ones(Size_1,Size_2);
for i=1:Size_2
if rem(i,2)==0
new_array_2 = array(:,i);
else
new_array_2 = -1*array(:,i);
end
end
new_array should be this
new_array =
1 -1 1 -1 1 -1
1 -1 1 -1 1 -1
1 -1 1 -1 1 -1
1 -1 1 -1 1 -1
1 -1 1 -1 1 -1

채택된 답변

madhan ravi
madhan ravi 2019년 2월 9일
No loops needed:
size1=5;
size2=6;
A=ones(size1,size2);
A(:,2:2:end)=-A(:,2:2:end)
  댓글 수: 2
ARP
ARP 2019년 2월 9일
Thanks!
I am still corious what I did wrong on my script. I will need to implement something like that later on. Specifically, to read if the folder number is even or uneven.
madhan ravi
madhan ravi 2019년 2월 9일
See the answer below.
Reasons:
  • You forgot to preallocate new_array_2.
  • You forgot to index new_array_2.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

madhan ravi
madhan ravi 2019년 2월 9일
If you insist loop then:
Size_1 = 5;
Size_2 = 6;
A = ones(Size_1,Size_2);
for i=1:Size_2
if rem(i,2)==0
A(:,i)=-A(:,i); % if even change the sign
else
A(:,i)=A(:,i);
end
end

카테고리

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

Community Treasure Hunt

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

Start Hunting!

Translated by