» »

MATLAB - zlaganje členov iz matrike v novo matriko n-krat

MATLAB - zlaganje členov iz matrike v novo matriko n-krat

mirch ::

Pozdravljeni! Imam majhen problem v matlabu ... Kako bi posamezen element te matrike (

- v tem primeru so dimenzije 8x3x3, ampak se dimenzije spreminjajo!) postavil v novo matriko.

Kot sem že omenil se dimenzije matrike spreminjajo (ni nujno da je velikost matrike vedno 8x3x3), ter teh matrik je 9 (JA do JI) - ampak so vse enake velikosti kot prva!!!

Kako bi torej zložil posamezne komponente matrik JA, JB, JC, JD, JE, JF, JG, JH, JI v nove matrike.

Nova matrika bi se generirala toliko krat koliko je členov v npr. JA! Izgled naslednje matrike bi bil takšen: Jac=[JA,JB,JC;JD,JE,JF;JG,JH,JI]

torej če je členov 8x3x3 = 72, bi bilo 72 matrik Jac, katere bi vsebovale po en člen matrike JA, JB, JC, JD, JE, JF, JG, JH, JI


Prosim za pomoč! Upam da razumete moje vprašanje. LP
  • spremenil: mirch ()

darkkk ::

Dej z indeksi napiš :) Ven iz tega ne morem niti razbrati, kake naj bi bile dimenzije rezultata.

MaFijec ::

Odgovor na tvoje težave je uporaba : in ukaza reshape.

Pravilno se tvojim strukturam reče tenzorji.

Najprej uporabiš flatten JA(:), ki ti elemente tenzorje zloži v stolpec.

Torej recimo
A = [JA(:), JD(:), JG(:), JB(:), JE(:), JH(:), JC(:), JF(:), JI(:)];
A = A'; %reshape deluje po stolpcih v katerih so zdaj istoležni elementi matrik (linearni indeksi)
T = reshape(A, 3, 3, 72);

Tole je bilo na pamet, tako da so lahko kake težave :)

mirch ::

Jaz sem se zdaj teka lotil na naslednji način, vendar imam težave pri velikosti matrik, pa ne vem še kje:)

%TEST IZRAČUNA MATRIKE
clear all
% dimenzije robota ACMA XR701%
a1 = 250;
d1 = 645;
a2 = 1000;
a3 = 230;
d2 = 1587.4;

% branje minimalne vrednosti
x_min = 1;
y_min = 2;
z_min = 3;

% skaliranje vrednosti
x_res = 1;
y_res = 1;
z_res = 1;

% branje maksimalne vrednosti
x_max = 3;
y_max = 8;
z_max = 5;

% grupiranje podatkov v točke
x = [x_min:x_res:x_max]';
y = [y_min:y_res:y_max]';
z = [z_min:z_res:z_max]';

% ustvarjanje mreže
[X, Y, Z] = meshgrid(x, y, z);
%scatter3 (X(:), Y(:), Z(:), 10)


% izračun notranjih koordinat
S3 = sin(a3);
C3 = cos(a3);
B = d2*S3 - a3*C3;
SB = sqrt(-(B*B)+a3*a3+d2*d2);
q3 = atan2(a3,d2)-atan2(B, SB);

S2 = sin(a2);
C2 = cos(a2);
q2 = atan2(S2,C2);

q1 = atan2(Y,X);

[AM,BM,CM]=size(q1);


JA = (-d2*cos(q1)*cos(q2)*sin(q3)-d2*cos(q1)*sin(q2)*cos(q3)-a3*cos(q1)*cos(q2)*cos(q3)+a3*cos(q1)*sin(q2)*sin(q3)-a2*cos(q1)*cos(q2)+a1*sin(q1)); % "levi zgoraj"
JB = (d2*sin(q1)*sin(q2)*sin(q3)-d2*sin(q1)*cos(q2)*cos(q3)+a3*sin(q1)*sin(q2)*cos(q3)+a3*sin(q1)*cos(q2)*sin(q3)+a2*sin(q1)*sin(q2)+a1*cos(q1)); % "sredina zgoraj"
JC = (-d2*sin(q1)*cos(q2)*cos(q3)+d2*sin(q1)* sin(q2)*sin(q3)+a3*sin(q1)*cos(q2)*sin(q3)+a3*sin(q1)*sin(q2)*cos(q3)-a2*sin(q1)*cos(q2)+a1*cos(q1)); % "desno zgoraj"
JD = (-d2*sin(q1)*cos(q2)*sin(q3)-d2*sin(q1)*sin(q2)*cos(q3)-a3*sin(q1)*cos(q2)*cos(q3)+a3*sin(q1)*sin(q2)*sin(q3)-a3*sin(q1)*cos(q2)+a3*cos(q1)); % "levi v sredini"
JE = (-d2*cos(q1)*sin(q2)*sin(q3)+d2*cos(q1)*cos(q2)*cos(q3)-a3*cos(q1)*sin(q2)*cos(q3)-a3*cos(q1)*cos(q2)*sin(q3)-a3*cos(q1)*sin(q2)+a3*sin(q1)); % "sredina v sredini"
JF = (d2*cos(q1)*cos(q2)*cos(q3)-d2*cos(q1)*sin(q2)*sin(q3)-a3*cos(q1)*cos(q2)*sin(q3)-a3*cos(q1)*sin(q2)*cos(q3)+a3*cos(q1)*cos(q2)+a3*sin(q1)); % "desni v sredini"
JG = (d2*sin(q2)*sin(q3)+d2*cos(q2)*cos(q3)+a3*sin(q2)*cos(q3)+a3*cos(q2)*sin(q3)+a2*sin(q2)+d1); % "levi spodaj"
JH = (d2*cos(q2)*sin(q3)+d2*sin(q2)*cos(q3)+a3*cos(q2)*cos(q3)-a3*sin(q2)*sin(q3)+a2*cos(q2)+d1); % "sredinski spodaj"
JI = (d2*sin(q2)*cos(q3)+d2*cos(q2)*sin(q3)-a3*sin(q2)*sin(q3)+a3*cos(q2)*cos(q3)+a2*sin(q2)+d1); % "desni spodaj"

n = 1;

for i = 1:AM;
    for j = 1:BM
        for k = 1:CM
            Jac(n) = [JA(i,j,k), JB(i,j,k), JC(i,j,k); JD(i,j,k), JE(i,j,k), JF(i,j,k); JG, JH, JI];
            n = n+1;
        end
    end
end


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

matematika- trigonometrija

Oddelek: Šola
252528 (1824) lebdim
»

matematika kotne funkcije

Oddelek: Šola
162207 (1978) celada
»

Matematika - kotne funkcije pomoč

Oddelek: Šola
81652 (1536) amigo_no1
»

Statika- trenje

Oddelek: Šola
232526 (2173) gzibret
»

Limitiranje

Oddelek: Znanost in tehnologija
313005 (2195) CHAOS

Več podobnih tem