Can't make this for loop work...

I am trying to make this loop through so that I get a J1, J2, J3, and J4 matrix.
s1 = -.5773;
t1 = -.5773;
s2 = -.5773;
t2 = .5733;
s3 = .5773;
t3 = -.5773;
s4 = .5773;
t4 = .5773;
W1 = 1;
W2 = 1;
W3 = 1;
W4 = 1;
x1 = 3;
y1 = 2;
x2 = 5;
y2 = 2;
x3 = 5;
y3 = 5;
x4 = 3;
y4 = 4;
X_c = [x1 x2 x3 x4];
Y_c = [y1;y2;y3;y4];
for i = 1:4
J_i = (1/8)* X_c *[0 1-ti ti-si si-1; ...
ti-1 0 si+1 -si-ti; si-ti -si-1 0 ti+1; ...
1-si si+ti -ti-1 0] *Y_c
end
Sorry it has been a while since I have written any code and I am very inefficient.

回答(1 个)

dpb
dpb 2015-3-23

2 个投票

"...this loop through so that I get a J1, J2, J3, and J4 matrix"
Don't do that! See the FAQ for why not and "more better" ways...

4 个评论

Carlen
Carlen 2015-3-23
移动:DGM 2023-9-13
It says that ti is undefined...still can't get it to work.
dpb
dpb 2015-3-23
移动:DGM 2023-9-13
That's why it's strongly recommended to not try to "poof" variables into the workspace. Use arrays or cell arrays or even dynamically-name structures, but not this which results in having to use eval to do anything with the resulting variables.
Carlen
Carlen 2015-3-23
移动:DGM 2023-9-13
Thanks for the reply. I am certainly a beginner to coding and some of this stuff is a bit over my head. It looks like I will have to do some more research on this and maybe get some external help.
It is not clear why you need to define all of these values as separate variables. It would be much neater and simpler if you just did this:
W = [1,1,1,1];
x = [3,5,5,3];
y = [2,2,5,4];
... etc.
And then you could also use MATLABs very powerful code vectorization abilities to make the rest of your code neater and faster too.

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Variables 的更多信息

提问:

2015-3-22

移动:

DGM
2023-9-13

Community Treasure Hunt

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

Start Hunting!

Translated by