How to vary the interval of this matrix?

Thank you all for the reply. I already solved, in part, the problem I had, but now I have another. I have this line of code:
prueba=['MK_G', num2str(px(j,1)),'(4:6,4:6)'];
where 'MK_G', num2str (px (j, 1)) are N number of matrices that are already created. but I require, in some way, that the intervals of the matrix that I am evaluating (in this case 4: 6,4: 6) are in some way variable. I thank you for your collaboration with this new problem.

6 Comments

What do you mean by variable? How do you want to set the interval?
Thank you very much for your help.
with variable I mean that it is not unique (as in this case where the intervals are (4: 6,4: 6), but that they depend on a variable that is already established. An example mode (although I know it's wrong) would be something like this:
i=1;
For i = 1:10
prueba=['MK_G', num2str(px(j,1)),'(i:i+2,i:i+2)'];
end
‘I already solved, in part, the problem I had, ...’
Please link to it to provide a context.
while i>=1 && i<=VarElem_F %while 2 start
[px, py]=find(Nodos==datos(i,col)) %Busca posicion de nodos iguales
if length(py)==1
jj=1;
j=0;
else
jj=1;
j=1;
end
if (py(jj,1)==1 && py(j+1,1)==1) % If start 1
for j = 1: length(px)
prueba=['MK_G', num2str(px(j,1)),'(1:3,1:3)'];
prueba=eval(prueba);
aux=aux+prueba;
M_cons=aux;
end
prueba=0;
aux=0;
j=1;
px=0;
py=0
elseif py(j,1)==2 && py(j+1,1)==2
for j = 1: length(px)
prueba=['MK_G', num2str(px(j,1)),'(4:6,4:6)'];
prueba=eval(prueba);
aux=aux+prueba;
M_cons=aux;
end
prueba=0;
aux=0;
j=1;
elseif py(jj,1)~=py(j+1,1)
for j = 1: length(px)
prueba=['MK_G', num2str(px(j,1)),num2str(j+1:j+2,j+1:j+2)];
prueba=eval(prueba);
aux=aux+prueba;
M_cons=aux;
end
prueba=0;
aux=0;
j=1;
elseif py(jj,1)~=py(j+1,1)
end % If end 1
if i == VarElem_F && col==6 %If start 2
col=7;
f = 1;
i=1;
else
i=1+i;
end %If end 2
end %while 2 end
Looks like a continuation of this Answer.
Ugh.. Looks like he didn't pick up on the advice regarding dynamic variables.

Sign in to comment.

Answers (1)

jonas
jonas on 26 Jul 2018
Edited: jonas on 26 Jul 2018
i is your variable, then
formatSpec = '(%d:%d,%d:%d)';
str = sprintf(formatSpec,i,i+2,i,i+2)
prueba=['MK_G', num2str(px(j,1)),str];
You want the length of the interval to be variable as well? Just change the 2 to a variable.

2 Comments

I will try this code. thank you very much.
jonas
jonas on 26 Jul 2018
Edited: jonas on 26 Jul 2018
No problem! I changed to sprintf for building the string instead, a bit more elegant.
EDIT: Ugh... Don't name variables dynamically. It's not good practice. Better use cell arrays or dynamic field variables.

Sign in to comment.

Categories

Find more on Programming in Help Center and File Exchange

Products

Release

R2017b

Asked:

on 26 Jul 2018

Edited:

on 28 Jul 2018

Community Treasure Hunt

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

Start Hunting!