필터 지우기
필터 지우기

How to use if-then with matrix indices

조회 수: 4 (최근 30일)
Shan  Chu
Shan Chu 2016년 5월 3일
답변: Guillaume 2016년 5월 3일
Hi, I got a matrix n by n of a symbolic value a. And I want to change the value of a based on the matrix indices.
syms a
n=50;
z=ones(n)*a;
for i=1:1:n
for j=1:1:n
if j=1 or j=i then a=4
else a=8
Could you please help? thanks

채택된 답변

Guillaume
Guillaume 2016년 5월 3일
You certainly don't need a loop to generate your a.
a = ones(n) * 8; %default value everywhere
[rows, cols] = ndgrid(1:n); %matrices of row and column indices
a(rows == 1 | rows == cols) = 4; %substitute when condition is met
Note that because your i and j variables are meaningless, it's not clear whether you meant it to be column 1 or row 1 that get sets to 4. I assume it was rows but it's obvious how to change it to columns. Using variable names with meaning makes the code much clearer. Moreover i and j are actually functions in matlab, so are not recommended as variable names anyway.

추가 답변 (2개)

Andrei Bobrov
Andrei Bobrov 2016년 5월 3일
편집: Andrei Bobrov 2016년 5월 3일
n = 50;
z = ones(n)*8;
z(:,1) = 4;
z(eye(n)>0) = 4;
  댓글 수: 2
Shan  Chu
Shan Chu 2016년 5월 3일
sorry, actually a=4 when j=1 and j=i
Andrei Bobrov
Andrei Bobrov 2016년 5월 3일
corrected

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


Torsten
Torsten 2016년 5월 3일
n = 50;
z = ones(n)*8;
z(:,1)=4;
z(eye(n)==1)=4;
Best wishes
Torsten.

Community Treasure Hunt

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

Start Hunting!

Translated by