是否可以在matlab中打开Excel中的工作表并编辑公式?这个想法是通过创建第二张表来自动化不确定性分析,其中每个单元格中的不确定性来自前一个单元格的值.基本上,我想将单元格视为变量,并为每个单元格执行SQRT(SUM(Partials(xi)^ 2)).matlab应该没有问题,但它可以编辑表格中的公式吗?
目前的过程是从excel复制并粘贴到matlab.这是一个小函数,可以在matlab中对方程组进行不确定性:
function [f_u_total f_u] = uncertAnalysis(f, vars, vars_u) f_u = []; f_u_total = []; for(i=1:length(f)) f(i) item = uncertAnalysisi(f(i), vars, vars_u); f_u = [f_u; item(1)]; f_u_total = [f_u_total; item(1)]; end end function [f_u_total f_u] = uncertAnalysisi(f, vars, vars_u) f_u = []; % take the partials and square them for i=1:length(vars) f_u = [f_u; vars(i) (diff(f, vars(i)).*vars_u(i)).^2]; end % calculate the RSS f_u_total = (sum(f_u(:,2))).^.5; end
顺便说一下,方程看起来像这样(为什么我不是手工做):
=(9*C!S3^2/C!V3^4*C!W3*(C!O3- C!P3)/C!X3*C!Q3^6*C!F3^4/C!Y3^6/(C!U3^C!Z3)^6*F3^2+1/4*C!S3^2/C!V3^4*C!W3/(C!O3- C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*O3^2+1/4*C!S3^2/C!V3^4*C!W3/(C!O3- C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*P3^2+9*C!S3^2/C!V3^4*C!W3*(C!O3- C!P3)/C!X3*C!Q3^4*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*Q3^2+1/C!V3^4*C!W3*(C!O3- C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*S3^2+9*C!S3^2/C!V3^4*C!W3*(C!O3- C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*C!Z3^2/C!U3^2*U3^2+4*C!S3^2/C!V3^6*C!W3*(C!O 3-C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*V3^2+1/4*C!S3^2/C!V3^4/C!W3*(C!O3- C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*W3^2+1/4*C!S3^2/C!V3^4*C!W3*(C!O3- C!P3)/C!X3^3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*X3^2+9*C!S3^2/C!V3^4*C!W3*(C!O3- C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^8/(C!U3^C!Z3)^6*Y3^2+9*C!S3^2/C!V3^4*C!W3*(C!O3- C!P3)/C!X3*C!Q3^6*C!F3^6/C!Y3^6/(C!U3^C!Z3)^6*LOG(C!U3)^2*Z3^2)^(1/2)
Jason S.. 5
您应该能够通过COM/ActiveX/Automation完成它.查看外部接口文档; 有一个如何通过Excel的自动化界面访问Excel文档的示例.
我几乎没有以这种方式操纵Excel的经验,但我知道你可以通过自动化在Excel中做任何事情,编辑单元格公式听起来并不那么难.
编辑:我找不到Excel对象模型的引用,但这是另一个例子:http://support.microsoft.com/kb/301982
您应该能够通过COM/ActiveX/Automation完成它.查看外部接口文档; 有一个如何通过Excel的自动化界面访问Excel文档的示例.
我几乎没有以这种方式操纵Excel的经验,但我知道你可以通过自动化在Excel中做任何事情,编辑单元格公式听起来并不那么难.
编辑:我找不到Excel对象模型的引用,但这是另一个例子:http://support.microsoft.com/kb/301982