hrbeu2008 发表于 2008-11-19 20:40

利用MATLAB进行大数据运算求助~~~~~~~~

我的程序如下:

a=[];
digits(8);
vpa(a);
b=a(:,2)';
c=b.^2;
d=(sum(c(:))/numel(c))^(1/2)

程序很简单,想要实现的功能也很简单,就是输入一个n行2列的矩阵(就是a),读取其第二列并赋给矩阵b(第一列为编号,用不上),将各列数据求取平方和,然后除以数据的个数并开平方。

但是我的数据有大概五千多行,MATLAB只能允许一千多行数据,再多就不行了。

各位大侠有没有办法更改一下我的小程序,让它可以一次性的运算所有五千多行的数据啊,我先谢谢了!

ChaChing 发表于 2008-11-19 21:25

不懂楼主为何使用digits及vpa两指令, 是symbolic运算?
我试过数值没问题
a=rand(5000,2); b=a(:,2)'; c=b.^2; d=(sum(c(:))/numel(c))^(1/2)

hrbeu2008 发表于 2008-11-19 21:56

原帖由 ChaChing 于 2008-11-19 21:25 发表 http://www.chinavib.com/forum/images/common/back.gif
不懂楼主为何使用digits及vpa两指令, 是symbolic运算?
我试过数值没问题
a=rand(5000,2); b=a(:,2)'; c=b.^2; d=(sum(c(:))/numel(c))^(1/2)

呵呵,此程序是我已毕业的师兄留给我的,我其实是用ANSYS的,只是在后面的数据处理的时候用到MATLAB,我没有专门学过MATLAB,当年的数值分析课有提过,不过我学的一塌糊涂,所以我对MATLAB程序基本不懂。

据我师兄所讲,digits(8)是为了规定有效数字位数为8位。
vpa(a)是要读取a的数值,以便下一步赋值其第二列给b。
不过我看好像也没什么用。^_^

你说得对,此程序可以正常运行,可是前提是数值行不多(大概1400多行是可以的),可是我的一个数据文件就有4000多行甚至5000多行,MATLAB就不行了。

不过还是很感谢ChaChing对我的问题的关注!谢谢了!
我刚才在百度里搜了一下,这个问题现已解决,命令如下:

a=importdata('file.txt');
b=a(:,2)';
c=b.^2;
d=(sum(c(:))/numel(c))^(1/2)

首先要把数据文件复制到MATLAB安装路径下的work文件夹里,并更名为file.txt。然后运行这个程序,5000多行数据就可以直接运行并得到结果了。

因为以前是把数据行直接复制到命令a=[ ];的中括号里了,一次只能算1400行左右的数据,所以我都是将数据分成4批,运行四次程序(不是1楼的程序,但功能是一样的,1楼的程序没法合并4此运算的结果,呵呵~)才算完的,很麻烦的,现在好了。

留个结果,希望对其它有类似问题的朋友有所帮助吧。

[ 本帖最后由 hrbeu2008 于 2008-11-19 22:00 编辑 ]
页: [1]
查看完整版本: 利用MATLAB进行大数据运算求助~~~~~~~~