声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: airhoo1

[编程技巧] 新手向您请教一简单问题,谢谢!

[复制链接]
发表于 2009-2-13 14:56 | 显示全部楼层
采用cell可以解决每次解数目不同的问题! 但还没解决cell2mat的问题!:@L
f=load('1.txt');j=size(f,1); TolSh=cell(j,1);
for i=1:j
c1=f(i,1);c2=f(i,2);c3=f(i,3);o=f(i,4);Vp=f(i,5);Vs=f(i,6);p=f(i,7);
Km=0.5*(c1*36.6+c2*76+c3*6.85+(c1/36.6+c2/76+c3/6.85)^(-1));
Um=0.5*(c1*45+c2*26+c3*20.9+(c1/45+c2/26+c3/20.9)^(-1));
a=sqrt(Um/(Km+4/3*Um));  G=0.9552+0.0448*exp(-c3/0.06714); m=1;
n=10^(0.426-0.235*log10(p))/m;  syms Sh;
y=Vp*(G*a*(1-o)^n+sqrt(3.3*Sh/(((1-Sh)/2.29+Sh/7.9)^(-1)+4/3*3.3*Sh))*o*Sh)-Vs;
Sh=solve(y,Sh);  TolSh{i}=subs(Sh)';
end
TolSh %% TolSh=cell2mat(TolSh)
回复 支持 反对
分享到:

使用道具 举报

 楼主| 发表于 2009-2-13 20:45 | 显示全部楼层
终于弄出来了,感谢ChaChing老师的热心帮助!其实程序已经对了,只是1.txt行数太多,使程序无法完成。我将1.txt分成两半(2.txt和3.txt),分别载入到matlab中进行计算,可以得出结果,最后再将结果整合在一块就行了。在这里,我要将鲜花送给我们的ChaChing老师,表示最真诚的感谢!
f=load('1.txt');j=size(f,1); TolSh=zeros(j,2);
for i=1:j
c1=f(i,1);c2=f(i,2);c3=f(i,3);o=f(i,4);Vp=f(i,5);Vs=f(i,6);p=f(i,7);
Km=0.5*(c1*36.6+c2*76+c3*6.85+(c1/36.6+c2/76+c3/6.85)^(-1));
Um=0.5*(c1*45+c2*26+c3*20.9+(c1/45+c2/26+c3/20.9)^(-1));
a=sqrt(Um/(Km+4/3*Um));
G=0.9552+0.0448*exp(-c3/0.06714);
m=1;
n=10^(0.426-0.235*log10(p))/m;
syms Sh;
y=Vp*(G*a*(1-o)^n+sqrt(3.3*Sh/(((1-Sh)/2.29+Sh/7.9)^(-1)+4/3*3.3*Sh))*o*Sh)-Vs;
Sh=solve(y,Sh);
TolSh(i,:)=subs(Sh);
end
TolSh
发表于 2009-2-13 22:07 | 显示全部楼层
下午忙一些事, 忘了说明一些事!
我使用11F程序跑LZ的资料, 报错又不同12F, 楼主是否又不小心搞乱了! 不会无解, 是解的数目不同!(v5.3)

刚刚我又试过v6.5 & v7.2, v6.5与v5.3相同情况, 但v7.2解的数目就相同了, 但为复数根!
因LZ的原始问题不是很清楚, 无法确定LZ的解应为如何! LZ自己判断!
 楼主| 发表于 2009-2-13 22:37 | 显示全部楼层
谢谢!有的解为复数根是正常的,我用的V7.0版本,解的数目也是相同的,但计算的行数多了总是报错,后来将1.txt文件改成两个文本后再单独用17F的程序运行就好了。真正原因我也没搞懂。无论如何,谢谢ChaChing老师和各位的指导!

评分

1

查看全部评分

发表于 2009-2-14 11:06 | 显示全部楼层
LZ太客气! 个人都不太好意思了!
说真格的, 没有任何版主或网友有义务帮忙解决问题!
只是刚好你的话题, 个人刚好有兴趣试试并学习!
所以发问是个技巧, 要让人有兴趣愿意花时间试! 毕竟没有人有义务

还有一个问题, 若可能的话, 可否请LZ约略讲讲原始问题是甚? 到底是要解决什麽工程问题? 大家互相学习!
 楼主| 发表于 2009-2-14 21:54 | 显示全部楼层
还有一个问题, 若可能的话, 可否请LZ约略讲讲原始问题是甚? 到底是要解决什麽工程问题? 大家互相学习!


解决的问题是利用岩石物性数据计算海底沉积物中的天然气水合物含量。我们在实验室内模拟海底温度压力环境,在沉积物孔隙中合成水合物。在实验过程中实时探测声速和含水量的变化情况,从而建立水合物含量(由孔隙度减去含水量算出)与声速的关系,并在此基础上检验前人的速度模型或建立新的速度模型。最后,利用合适的速度模型来计算某一海域的水合物蕴藏情况。
我上面是利用速度模型计算海底沉积物中的水合物含量,同行或感兴趣的朋友可以多多交流,相互学习!以后可能还会碰到很多问题,到时再向大家求教。谢谢!

[ 本帖最后由 airhoo1 于 2009-2-14 21:57 编辑 ]

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-22 07:04 , Processed in 0.065522 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表