How to use if-then with matrix indices

1 次查看(过去 30 天)
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;

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

类别

Help CenterFile Exchange 中查找有关 Equation Solving 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by