Building of cell array of n*n
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hey all,
I am not getting how to explain the problem in which I am stuck. But I wil try to do make it understandable to all with examples where it needs.
I am working on a project to build the user interface(Not GUI). Here User has to give some inputs in the form of matrix(either 1-D or 2-D).
For an example, Contact Area matrix between two materials.
Contact_Area = [ A_1_1 A_1_2 A_1_3; A_2_1 A_2_2 A_2_3; A_3_1 A_3_2 A_3_3] % A_1_1,A_2_2 and so on will be zero always.
% A_1_2 and A_2_1 and so on will be same always
Let's consider we have three square metals, Square metal 1 is inside 2 and 3 is placed in next to 2.
Here Some materials have a maximum of six contact area with other materials.
For an example, If we consider a square metal 1 and this square metal 1 is inside another square metal(2).
Here we can easily say that square metals 1 and 2 have six contact points. Contact areas are Vertical left, vertical right, Horizontal/vertical front, Horizontal/vertical back, Horizontal top, horizontal bottom(Just make an imgination, then you will get it).
And square metals 2 and 3 have just one contact point/node/area, placed next to each other.
The Contact_Area matrix which is there above is fine for one contact point/one contact area. But it is not fine for more than 1 contact areas or points/nodes.
Here are the user-defined function.
function [ L ] = Leitwert_L_1_2(Lambda_1,Lambda_2,A_1_2_H_t, A_1_2_H_b, A_1_2_H_V_f,A_1_2_H_V_ba, A_1_2_V_l, A_1_2_V_r);
% Above function for Square metal 1 and 2
% A_1_2_H_t = Contact area Horizontal top % A_1_2_H_V_ba = Contact area Horizontal/vertical back
% A_1_2_H_b = Contact area Horizontal bottom % A_1_2_V_l = Contact area vertical left
% A_1_2_H_V_f = Contact area Horizontal/vertical front % A_1_2_V_r = Contact area vertical right
function L = Leitwert_L(Lambda_2, Lambda_3, A_2_3 )
% Above function for square metal 2 and 3. Just one contact area. It is fine.
Note: It is just my anticipation formed according to my problem. Why? I have to build the model /write the general code which holds for all model irrespective for matrix size, mateirals and their contact points.
This is my solver.
function LA = Sample_Model
for i=1:n
for j=1:n
LA(i,j) = Leitwert_L_1_2(Lambda(i),Lambda(j), A(i,j), A(i,j),A(i,j),A(i,j),A(i,j),A(i,j)); % bad calling of input arguments here
LA(i,j) = Leitwert_L(Lambda(i), Lambda(j), A(i,j) );
end
x = LA;
disp(x);
end
Here I need to let solver know to take the correct function according to the contact points. Leitwert _L_1_2 for six contact points and Leitwert_L for one. It depends on the model, may be there will be three or two or four, or five contacts points or contact areas.
Here also I need help. calling the right function according to number of contact areas.
My problem start from here, How can I allow user to enter the all the contact areas depending on the contacts points between the materials along with just one contact area.
I got an idea, but I don't know how to implement it in the slover.
My idea is to Buid the cell array of contact area matrix like below.
Contact_Area = { 0 [ A_1_2_H_t A_1_2_H_b; A_1_2_H_V_f A_1_2_H_V_ba; A_1_2_V_l A_1_2_V_r] 0;
[A_1_2_H_t A_1_2_H_b; A_1_2_H_V_f A_1_2_H_V_ba; A_1_2_V_l A_1_2_V_r] 0 A_2_3;
0 A_3_2 0};
%I don't know it is a good idea or not. Bcoz, here I need to give some instruction to the user about entering the input arguments for the materials of more than one contact areaa. Like,
%First row for contact area horizontal top and bottom,
%second row for Contact area Horizontal/vertical front and back
%third row for contact area vertical right and left.
This is headache idea according to me! Need suggestion here as well.
And the implementation like below;
function LA = Sample_Model
for i=1:3
for j=3:
% Here I am not getting how to call all the input arguments of Function Leitwert_L_1_2 at a time.
%for ii = 1:6
% for jj = 1:6
LA(i,j) = Leitwert_L_1_2(Lambda(i),Lambda(j), A{i,j}A(ii,jj), A{i,j}A(ii,jj),A{i,j}A(ii,jj),A{i,j}A(ii,jj),A{i,j}A(ii,jj),A{i,j}A(ii,jj)); % I am not sure about the correctness of this %idea
LA(i,j) = Leitwert_L(Lambda(i), Lambda(j), A(i,j) );
end
x = LA;
disp(x);
end
Lambda is also a matrix, kindly ignore it. Bcoz I didn't included lots of input arguments to avoid the confusion.
I think that I gave proper explantion of my problem with the examples.
If you still need more explantions, I am ready to give
Any suggestions and answers will be much appreciated.
Thanks in advance.
1 Kommentar
Qayray
am 23 Jun. 2019
I think people would be more willing to help if you inserted the code using the "insert a line of code"-feature (Alt + Enter), this is really hard to follow ;)
Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!