i want to extract a matrix from a cell array that consists on a number of 3x3 matrices

1 次查看(过去 30 天)
i want to extract a matrix from a cell array that consists on a number of 3x3 matrices
clc
clear all
%Given lamina unidirecton properties E1, E2, G12,v12
n=3;
t= 5; %Ply thickness mm
h=n*t; %thickness of the laminate
E1= 181; %GPA
E2= 10.3; %GPA
G12= 7.17; %GPA
V12= 0.28; %poisson ratio
Nx= 1; %Mpa.mm
Ny= 1; %Mpa.mm
Nxy= 0; %Mpa.mm
Mx= 0;
My=0;
Mxy=0;
Force_vec=[Nx; Ny; Nxy; Mx; My; Mxy];
%Determine stresses and strains in each ply
%First step find Q matrix
tetha=[0 30 -45];
c=cosd(tetha);
s=sind(tetha);
%S matrix calculation
S=[1/E1 -V12/E1 0;-V12/E1 1/E2 0;0 0 1/G12];
%Q matrix calculation
Q=inv(S);
for i=1:numel(tetha)
%Transformation matrix calculation
T{i}=[c(i).^2 s(i).^2 2.*s(i).*c(i); s(i).^2 c(i).^2 -2.*s(i).*c(i); -s(i).*c(i) s(i).*c(i) (c(i).^2)-(s(i).^2)];
%Inverse of the transformation matrix
T_1{i}=inv(T{i});
%R matrix
R{i}=[1 0 0; 0 1 0; 0 0 2];
R_1{i}=inv(R{i});
%S bar matrix calculation
Sbar{i}=R{i}*T_1{i}*R_1{i}*S*T{i}; %results are in 1/GPA
%Q_bar matrix calculation
Qbar{i}=inv(Sbar{i});
end
i want to extract each matrix and save it alone from Qbar which consists of an array of matrices
  5 个评论
Stephen23
Stephen23 2022-5-16
"I mean extract a matrix from Qbar and assign to a value."
The word "extract" does not have a common MATLAB meaning. So I am asking you what you expect to happen, so that we can help you. Consider this simple example:
Qbar = {[11,12;13,14],[21,22;23,24],[31,32;33,34]}
Please show the expected output given this Qbar.

请先登录,再进行评论。

回答(1 个)

Nipun
Nipun 2023-10-9
Hi Mahmoud,
I understand that you are trying to extract and save individual matrices from a cell array of matrices, named Qbar. I assume that no changes are required to the code for matrix generation; all matrices saved in the cell array are index retrievable. Additionally, I assume that require a separate entry point (or file) for each saved matrix.
You can use save function to save a variable (in this case, the matrix) to a .mat file. Then, you can leverage load function to load the matrix from .m file . I am attaching an example code below to help with the matrix saving & loading:
Qbar = {[1,2;3,4],[201,89;98,982],[32921,312;3113,3344]};
% saving matrices in file Qbar_matrices_{i}.mat, where i is matrix index in
% Qbar
for i=1:length(Qbar)
file_name = "Qbar_matrices_"+string(i)+".mat";
matrix = Qbar{i};
save(file_name, "matrix")
end
% loading matrix
load("Qbar_matrices_1.mat", "matrix")
Link to the resources:
  1. save to a mat file: https://in.mathworks.com/help/matlab/ref/save.html
  2. load from a mat file: https://in.mathworks.com/help/matlab/ref/load.html
Regards,
Nipun

类别

Help CenterFile Exchange 中查找有关 Data Import and Network Parameters 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by