matlab中datax,菜鸟学飞--matlab系列1

在求time-averaged force

coefficients时开始"搜学",研究了如何用matlab和excel求rms的方法。虽然不知道这种方法所得的rms值是否就是time-averaged

(时间平均)值,但至少又学会了一种matlab的计算。

一。对于txt,dat类型文件:

先将目标文件file.txt导入matalbe,并赋值给矩阵X(此时file中应只有欲计算的一列数据):

X=load('f1exc.txt');

求解这列数据的rms值(注意X大小写与之前赋值要一致):

rms= sqrt(sum(X.^2)/length(X))

补充:将有多列数据的excel中的数据考入txt,成为有多列数据的

txt。此时赋值给矩阵X,则X也是多列矩阵。方法大致一样,只不过在求rms值时,需指明欲求的该列数据的列数。(如,欲求第一列数据的rms,则格式:X(:,1))

先将目标文件file.txt导入matalbe,并赋值给矩阵X(此时file中应有多列数据,则X为多列向量):

X=load('f1exc.txt');

求解这些数据中第一列(其他任何一列均方法类似)数据的rms值(注意X大小写与之前赋值要一致):

rms=

sqrt(sum(X(:,1).^2)/length(X(:,1)))

再补充一步,关于直接用matlab将数据写入excel中(只需要找到正确的欲写入的位置,合并后的KLM也没关系,指定为L就可以):

xlswrite('rms.xlsx',inlinerms,'sheet1','L3')

dat类型文件与txt读入相类似,如y2=load('CycleCm_f.dat');

二。对于excel(.xls,.xltx,xlsx类型)文件:

首先读入excel文件,命令为:

x=xlsread('f1.xltx');(x为名称,可随意设定)

将excel文件中的每一列赋值给某个列向量:

dataX=x(:,1);(dataX,dataY为名称,可随意设定)

dataY=x(:,2);

好了,接下来求解某列的rms值就可以了。:)

rms= sqrt(sum(dataX.^2)/length(dataX))

还有一点需要注意,欲写入的目标文件在执行命令期间应关闭,否则会出现错误提示:rror using

==> xlswrite at 253

The file C:\Documents and Settings\kyang\Desktop\rms.xlsx is not

writable. It may be locked by another

process.

final command:

x=xlsread('f1.xlsx');time=x(:,1);inline=x(:,2);lift=x(:,3);liftrms=sqrt(sum(lift.^2)/length(lift));inlinerms=sqrt(sum(inline.^2)/length(inline));xlswrite('rms.xlsx',inlinerms,'sheet1','F4');xlswrite('rms.xlsx',liftrms,'sheet1','I4');

one command can do it all!

a4c26d1e5885305701be709a3d33442f.png

至于在excel中,目前我用的是比较笨的方法,

首先,用一列(如I列)计算出目标列(如B列)数据的平方:

=B1^2, 之后拖动到列最后一个数据;

然后再基于此另起一列用命令计算B列数据的RMS值:

=SQRT((SUM(I:I)/26795)),其中26795是列B中所有元素的个数。

两者相比较之下,还是matlab更方便快捷一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值