| 查看: 819 | 回复: 12 | ||
[求助]
如何算第四、五列
|
|
94372.000 74670.000 0.000 1491.000 1491.000 94372.000 74670.000 50.000 1493.000 1496.000 94372.000 74670.000 100.000 1494.000 1793.000 94372.000 74670.000 150.000 1497.000 1792.000 94372.000 74670.000 200.000 1491.000 1795.000 94372.000 74670.000 250.000 1497.000 1793.000 94372.000 74670.000 300.000 1496.000 1794.000 55688.500 65415.340 0.000 1571.000 1553.000 55688.555 65415.340 50.000 1573.000 1553.000 55688.555 65415.340 100.000 1574.000 1763.000 55688.555 65415.340 150.000 1577.000 1773.000 55688.555 65415.340 200.000 1571.000 1763.000 55688.555 65415.340 250.000 1577.000 1776.000 55688.555 65415.340 300.000 1576.000 1774.000 81677.912 81412.098 0.000 1571.000 1553.000 81677.912 81412.098 50.000 1573.000 1553.000 81677.912 81412.098 100.000 1574.000 1763.000 81677.912 81412.098 150.000 1577.000 1773.000 81677.912 81412.098 200.000 1571.000 1763.000 81677.912 81412.098 250.000 1577.000 1776.000 81677.912 81412.098 300.000 1576.000 1774.000 . . . 一个数据文件“A.txt” 一共有五列,几千行。所有数据每7行为一组,即(1-7行)具有相同的第一列,第二列。 (8-14行)具有相同的第一列,第二列。。。。 第三列从0以50递增直到第7行的300。然后从第8行的0 增加到第14行300 。。。 第四列和第五列是两个实验值(无规律)。 我想通过matlab运算 输出一个文件“B.txt”,他的格式如下: 第一列二列,三列不变, 第四列的计算公式如下 第五列数据 【第四列第n行记做" B(n,4)" 】 B(1,4)=A(1,4) B(1,5)=A(1,4)/A(1,5) B(2,4)=[50*A(2,4)+ 0*B(1,4)]/50 B(2,5)=A(2,4)/A(2,5) B(3,4)=[50*A(3,4)+ 50*B(2,4)]/100 B(3,5)=A(3,4)/A(3,5) B(4,4)=[50*A(4,4)+100*B(3,4)]/150 。 B(5,4)=[50*A(5,4)+150*B(4,4)]/200 。 B(6,4)=[50*A(6,4)+200*B(5,4)]/250 。 B(7,4)=[50*A(7,4)+250*B(6,4)]/300 。 B(8,4)= A(8,4) 。 B(9,4)= [50*A(9,4)+ 0*B(8,4)]/50 B(10,4)=[50*A(10,4)+ 50*B(9,4)]/100 B(11,4)=[50*A(11,4)+100*B(10,4)]/150 B(12,4)=[50*A(12,4)+150*B(11,4)]/200 B(13,4)=[50*A(13,4)+200*B(12,4)]/250 B(14,4)=[50*A(14,4)+250*B(13,4)]/300 B(15,4)= A(15,4) 。 。 。 以此类题 其中第五列数据,判断的第n行数据B(n,5)是否介于0.7-1.6之间, 如果是则输出实际值。 如果 B(n,5)<0.7,那么 B(n,5)=A(n,5)/4+0.525, 如果B(n,5)>1.6,那么B(n,5)=, A(n,5)/4+1.2 最后输出 “ B.txt ” clc; clear; dat=dlmread('D:\A.dat'); filename='D:\B.txt'; fp = fopen(filename,'w'); [M,N]=size(dat); for i=1:M if dat(i,3)=0 dat(1,4)= dat(1,4) else ???? fprintf(fp,'%20.2f %20.2f %20.2f %20.2f %20.2f \n',dat(i,1),dat(i,2),dat(i,3),dat(i,4),dat(i,5)); end end end fclose(fp); 第四列和第五列我不知道该怎么办了,请大家帮忙给看看,谢谢 [ Last edited by woqunina on 2011-11-30 at 21:24 ] |
» 本帖已获得的红花(最新10朵)
» 猜你喜欢
假如你的研究生提出不合理要求
已经有8人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
实验室接单子
已经有4人回复
全日制(定向)博士
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
» 本主题相关价值贴推荐,对您同样有帮助:
请教怎样添加error bars
已经有9人回复
有没有从计算转向实验的同学
已经有12人回复
从粗产物的氢谱怎么来算产率?
已经有28人回复
【分享】东方文化经典讲读Mp3系列(四书五经类)(转)【已搜索无重复】
已经有12人回复
FAO列出的五大健康食品
已经有4人回复
PWSCF计算PDOS时,选哪列数据?
已经有15人回复
如何计算四氯化硅水解的反应热
已经有2人回复
诚求高手指导下EXCEL里的数据处理问题(把五排四列的数据排成一列)
已经有5人回复
【求助】MS计算CPU占用率问题,求教
已经有17人回复
重奖征集国内国外做理论计算课题组的信息
已经有44人回复
2楼2011-12-01 19:06:49
wangyuewu08
木虫 (著名写手)
- 应助: 13 (小学生)
- 金币: 2794
- 红花: 4
- 帖子: 1141
- 在线: 279.1小时
- 虫号: 1290073
- 注册: 2011-05-09
- 性别: GG
- 专业: 制造系统与自动化
【答案】应助回帖
★ ★
xiegangmai(金币+2): 谢谢应助! 2011-12-04 18:58:41
xiegangmai(金币+2): 谢谢应助! 2011-12-04 18:58:41
|
我不知道怎么在回帖中粘贴代码,就直接复制过来了 a表示A,b表示B,建议楼主少用大写字母,大写字母一般都是留给外部变量使用的。我不是很清除格式化输出,感觉楼主比我更了解 clc clear a = dlmread('D:\A.dat'); filename='D:\B.txt'; fp = fopen(filename,'w'); [m, n]=size( a ); b = data; %因为有三列值不用改变,可以将原始数据直接赋给b for i = 1 : 7 : m if dat(i, 3) <= 10^(-5) b( i, 4 ) = a( i, 4 ); b( i+1, 4 ) = ( 50 * a( i+1, 4 ) + 0 * b( i, 4 ) ) / 50; b( i+2, 4 ) = ( 50 * a( i+2, 4 ) + 50 * b( i+1, 4 ) ) / 50; b( i+3, 4 ) = ( 50 * a( i+3, 4 ) + 100 * b( i+2, 4 ) ) / 50; b( i+4, 4 ) = ( 50 * a( i+4, 4 ) + 150 * b( i+3, 4 ) ) / 50; b( i+5, 4 ) = ( 50 * a( i+5, 4 ) + 200 * b( i+4, 4 ) ) / 50; b( i+6, 4 ) = ( 50 * a( i+6, 4 ) + 250 * b( i+5, 4 ) ) / 50; b( i, 5 ) = a( 1, 4 ) / a( 1, 5 ); b( i+1, 5 ) = a( i+1, 4 ) / a( i+1, 5 ); b( i+2, 5 ) = a( i+2, 4 ) / a( i+2, 5 ); b( i+3, 5 ) = a( i+3, 4 ) / a( i+3, 5 ); b( i+4, 5 ) = a( i+4, 4 ) / a( i+4, 5 ); b( i+5, 5 ) = a( i+5, 4 ) / a( i+5, 5 ); b( i+6, 5 ) = a( i+6, 4 ) / a( i+6, 5 ); end end % 判断B( n ,5 ) for i = 1 : m if b( i, 5 ) < 0.7 b( i, 5 ) = a( i, 5 ) / 4 + 0.525; else b( i, 5 ) > 1.6 b( i, 5 ) = a( i, 5 ) / 4 + 1.2; end end |

3楼2011-12-03 20:57:03
wangyuewu08
木虫 (著名写手)
- 应助: 13 (小学生)
- 金币: 2794
- 红花: 4
- 帖子: 1141
- 在线: 279.1小时
- 虫号: 1290073
- 注册: 2011-05-09
- 性别: GG
- 专业: 制造系统与自动化

4楼2011-12-04 12:12:44
5楼2011-12-04 17:53:22
wangyuewu08
木虫 (著名写手)
- 应助: 13 (小学生)
- 金币: 2794
- 红花: 4
- 帖子: 1141
- 在线: 279.1小时
- 虫号: 1290073
- 注册: 2011-05-09
- 性别: GG
- 专业: 制造系统与自动化

6楼2011-12-04 20:01:19
wangyuewu08
木虫 (著名写手)
- 应助: 13 (小学生)
- 金币: 2794
- 红花: 4
- 帖子: 1141
- 在线: 279.1小时
- 虫号: 1290073
- 注册: 2011-05-09
- 性别: GG
- 专业: 制造系统与自动化

7楼2011-12-04 20:05:11
wangyuewu08
木虫 (著名写手)
- 应助: 13 (小学生)
- 金币: 2794
- 红花: 4
- 帖子: 1141
- 在线: 279.1小时
- 虫号: 1290073
- 注册: 2011-05-09
- 性别: GG
- 专业: 制造系统与自动化

8楼2011-12-04 20:29:14
|
非常感谢楼上的大力支持 现在豁然开朗! 谢谢! 现将最后完成的程序发上。 clc clear a = load('D:\A.dat'); filename='D:\B.txt'; fp = fopen(filename,'w'); [m, n]=size( a ) b = a; for i = 1 : 7 : m % b( i , 4 ) = a( i, 4 ); % b( i+1, 4 ) = ( 50 * a( i+1, 4 ) + 0 * b( i , 4 ) ) / 50; % b( i+2, 4 ) = ( 50 * a( i+2, 4 ) + 50 * b( i+1, 4 ) ) / 100; b( i+2, 4 ) = 0.5 * ( a( i+2, 4 ) + b( i+1, 4 ) ); b( i+3, 4 ) = ( 50 * a( i+3, 4 ) + 100 * b( i+2, 4 ) ) / 150; % b( i+4, 4 ) = ( 50 * a( i+4, 4 ) + 150 * b( i+3, 4 ) ) / 200; b( i+4, 4 ) = 0.25 * a( i+4, 4 ) + 0.75 * b( i+3, 4 ); % b( i+5, 4 ) = ( 50 * a( i+5, 4 ) + 200 * b( i+4, 4 ) ) / 250; b( i+5, 4 ) = 0.2 * a( i+5, 4 ) + 0.8 * b( i+4, 4 ); b( i+6, 4 ) = ( 50 * a( i+6, 4 ) + 250 * b( i+5, 4 ) ) / 300; end % 用matlab的数组运算计算B的第5列 b( :, 5 ) = a( :, 4 ) ./ a( :, 5 ); % 判断并修改B的第5列 index = b( :, 5 ) < 0.7; b( index ) = a( index ) / 4 + 0.525; index = b( :, 5 ) > 1.6; b( index ) = a( index ) / 4 + 1.2; for i = 1 : m fprintf(fp,'%20.2f %20.2f %20.2f %20.4f %20.4f \n',b(i,1),b(i,2),b(i,3),b(i,4),b(i,5)); end fclose(fp); |
9楼2011-12-05 10:44:50
10楼2011-12-05 10:46:21












回复此楼
woqunina

