【发布时间】:2015-04-23 15:56:13
【问题描述】:
function [inilife,ini_cycle] = cycode(a,b,c)
ld =load('allstresscomp.mat');% loading .mat file of(81290 rows and 6 colomns)
% from this .mat file I want extract row by row values(6 values of column)
ini_cycle=zeros(length(ld),1);
for Z=1:1:length(ld(:,1))
sigc11=ld(Z,1);
sigc12=ld(Z,6);
sigc13=ld(Z,5);
sigc22=ld(Z,2);
sigc23=ld(Z,4);
sigc33=ld(Z,3);
sigc = [sigc11; sigc12; sigc13; sigc22; sigc23; sigc33];
matstress = a*sigc;
sigm1 = matstress(1,1);
sigm2 = matstress(2,1);
sigm3 = matstress(3,1);
sigm23 = matstress(4,1);
sigm31 = matstress(5,1);
sigm12 = matstress(6,1);
It = [sigm2 + sigm3 + sqrt((sigm2 +sigm13)^(2)- 4*(sigm12*sigm23 + sigm1^(2)))]/2;
N(Z) = It + c - b; % this is one answer for values of one row of .mat file
ini_cycle(Z,1)=N(Z);
end
inilife = N;
我是 Matlab 的初学者,正在尝试编写一个小代码。我有.mat 文件(allstresscomp.mat),大小为[81920(rows),6(columns)]。如何在代码中使用 .mat 文件第一行的所有 6 个值然后找到答案。再次在代码中使用 .mat 文件第二行的所有 6 个值,然后找到答案,依此类推,直到最后 81290 行,并将这些逐行答案保存在一些 variable 'N' 中。最后,我可以从'N' 获得我要求的任何行的答案吗?我已附上我的'cycles_code.m'。
function [inilife,ini_cycle] = cycles_code(cc, cf, cm,sif,sim,bt,bs1,bs2,freq,actvol,planck,U,k,T,loadratio)
d = cc-cf;
e = cc-cm;
f = inv(d);
A = -(sim/sif)*(f\e);
I = eye(6);
g = (sim*I)+(sif*A);
h = inv(g);
ld =load('allstresscomp.mat');
ini_cycle=zeros(length(ld),1);
for Z=1:1:length(ld(:,1))
sigc11=ld(Z,1);
sigc12=ld(Z,6);
sigc13=ld(Z,5);
sigc22=ld(Z,2);
sigc23=ld(Z,4);
sigc33=ld(Z,3);
N = 0;
sigc = [sigc11; sigc12; sigc13; sigc22; sigc23; sigc33];
j = h\inv(cc)*sigc;
matstress = cm*j;
sigm1 = matstress(1,1);
sigm2 = matstress(2,1);
sigm3 = matstress(3,1);
sigm23 = matstress(4,1);
sigm31 = matstress(5,1);
sigm12 = matstress(6,1);
It = [sigm2 + sigm3 + sqrt((sigm2 +sigm3)^(2)- 4*(sigm2*sigm3 + sigm23^(2)))]/2;
Is1 = sigm12^(2) + sigm31^(2);
Is2 = 0.25*(sigm2-sigm3)^(2) + sigm23^(2);
At = bt/bs1;
As = bs2/bs1;
effstress = sqrt(At*It^(2) + Is1 + As*Is2);
sigmax = effstress;
sigmin = loadratio*sigmax;
actvoll = actvol/(6.02214179*10^(23));
V = U/(6.02214179*10^(23));
a = (actvoll*sigmax)/(k*T);
b = (actvoll*sigmin)/(k*T);
p = a*log10(exp(1));
q = log10(1-2^((b*log10(exp(1)))-(a*log10(exp(1)))));
c = p+q;
d = (V/(k*T))*log10(exp(1));
e = log10((freq*actvoll*planck*(sigmax-sigmin))/(k*T)^2);
N(Z) = e+d-c;
ini_cycle(Z,1)=N(Z);
end
inilife = N;
【问题讨论】:
-
请将您的代码减少到最小可重现示例
-
请在上面找到代码'cycode.m'的小版本,
标签: matlab