背景:处理excel表格中的各年沉速数据,在matlab当中对其进行数据变换——解方程,得到分界粒径数据。
批量解复杂方程
**就按照一二三做一遍,因为需要先有x和y存在,再用函数才能正确运行哦**
一、导入数据
略。
如果不使用函数形式(需要处理的数据文件较少)可以这样计算:
syms x y
for i=1:length(x1993)
xsolve=solve(sqrt((13.95*0.000001/x)^2+1.09*1.65*9.8*x)-13.95*0.000001/x-y==0,x)
yvalue=x1993
xvalue=subs(xsolve,y,yvalue)
end
eval(xvalue)
如果使用函数的话:
二、写解方程函数
已知y,求解x,xsolve是关于y的表达式解
function [x] = partical2( y )
syms x y
xsolve=solve(sqrt((13.95*0.000001/x)^2+1.09*1.65*9.8*x)-13.95*0.000001/x-y==0,x)
end
- 引用这个函数时,事先需要先有相同长度格式的x和y的矩阵。
三、批量求解,引用函数
xvalue是xsolve代入y值之后的数值解
partical2(x2004) %%引用函数,且y为x2004文件,也可以是多年的矩阵
yvalue=x2004 %%把x2004里的值(沉速)都赋予yvalue
xvalue=subs(xsolve,y,yvalue) %%把yvalue赋值给xsolve里的y
a2004=eval(xvalue) %%展示xvalue真实值``
%%可以每个文件都把x2004改成自己的文件名运行,调用函数即可
c=[x2003;x2004;x2005] %拼接,也可以前面就用多年的数据,就不用拼接了
fid = fopen('E:\Buffer\My work\Z\c.txt','wb') %创建txt文件
##将C转置
fprintf(fid,'%8.9f %8.9f %8.9f\n',c) %输出到c