作者shuntau (猫柳田博士)
看板MATLAB
标题Re: [问题] 读档的问题
时间Tue Aug 6 22:03:10 2013
※ 引述《starmoon0918 (T毛很强滴)》之铭言:
: 问题是这样的
: 以下是我的txt档的table
: ---------------> x
: | ---------------- 这是一个二维阵列,我想要写一个从第一行
: | | 00111010101000 |
: | | 11001000101110 | ========> 读取到最後一行的所有字串。在每一行读取
: | | 00011010111010 |
: | | 10101100011111 | 时,碰到1的时候做一个fprintf。
: v ----------------
: y
: 因为自己没学过 Matlab 看了一些教学还是不太会,希望有人可以指点教导
: 假如我的 txt 档名是 load_test.txt
既然你的架构是回圈的话
那就用你回圈的架构来试着帮你改改看
: Array = fopen('load_test.txt','r'); 有没有错?
基本上没错,就不能写入而已
既然是纯数字的话可以试试看这个
table = load('load_test.txt'); 记住你的txt的位置要跟你的m档一样喔
S = size(table); 就是检查看看你的矩阵的大小,通常会给你两个数字
第一个是列数(row)、第二个是行数(column)
通常列数对应到的是y座标、行数则是x座标
: ---------------------------
: (以下这边不会写Orz)
: ---------------------------
for y = 1:s(2); 因为原文是行数,所以照定义写
for x = 1:s(1); 理由同上,这个是列数
: if( x == 1)
: w = 0 + 164*(x-1);
: t = -330 + 374*(y-1);
: fprintf(Array,'C6 T%d,474;\n',w);
: fprintf(Array,'');
: x = x + 1;
: else
: x = x + 1;
: end
: y = y + 1;
: end
: end
: 以上code很不完整,问题比较大是在读档的部分,怎麽知道这个table的行和列是多少
: 因为卡在这边就不知道怎麽写下去
接着如果要找每个1在哪个位置就很简单了
把这个塞到x回圈中
if table(y,x) == 1
pos = [pos ; y,x]
end
当然pos这个参数要在回圈外就先设定好
以上的作法算是非常直观,但是会很操matlab与电脑
其实这个有几乎不用回圈的作法
(例如说:用find可以一次就把矩阵中某个值的位置分布给找出来)
但这个初学者是几乎没办法想像的(在下也是初学者XD)
所以可以先试试把Matlab的环境摸熟後,再学更核心的部份
共勉之
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.24.53.100
1F:→ starmoon0918:感谢帮忙,我还有问题直接用信件问您 08/06 22:51