# MATLAB/COMSOL geometry loops?

• MATLAB

## Main Question or Discussion Point

Hi i'm a new user in Comsol and Matlab and I have to create boxes within a box. Of course those boxes are easy, my problem is how do you make loops in MATLAB that translates to the g1=rect2(blah blah)
g2=rect2(blah blah)..

For example:
The boxes within the outside box varies so it's better to write everything in a loop say 5 boxes

length=[1,2,3,4,5];
width=[1, 1, 1, 1, 1];
cornerx=[0, 5, 10, 15, 20];
num=5;
for i=1:num;
name=strcat('g',num2str(i));
name=rect2(width(i),length(i),'base','corner','pos',[cornerx,0])
end;

Of course that would not work because the variable name will be overwritten everytime the rect2 occurs. Comsol doesn't follow that name=rect2(width(i),length(i),'base','corner','pos',[cornerx,0]), since it only recognizes g1= , g2=, etc.

Is there any way to write the loop and COMSOL would understand that i want to write 5 or 6 or 7 boxes in a box other than writing out each g1 g2 g3 manually?

Thanks!!!

Luhao

Related MATLAB, Maple, Mathematica, LaTeX News on Phys.org
I also had the same problems with making a loop of my geometries in comsol throug matlab. With a little help from this link:

I manages to make my loop in a while loop, making a cell array :) The problem was that I was not able to use the varible g, i don't know why!?!?!

My script looks like this:

while a > a_internal+(i)*(spac+w)
draw{i} = rect2(w,h,'base','corner','pos',[a_internal+(i-1)*(spac+w),0]);
i = i+1;
end

where a is radius, spac,w,h is different values for my geometry dimention. Then you use acces the structueres with draw{i} where i is the i'th number in your loop..

Hope it helps you:)