【发布时间】:2014-07-24 22:54:44
【问题描述】:
我有一个testfile.txt,它是一个 4 x 4 矩阵和制表符分隔
1 1 3 4
2 2 3 4
3 1 3 4
4 2 3 4
我想要的输出是这样的:
如果检测到第二列有 1,则在右侧插入一个新列,新列应该包含类似
x=[1 1 0 3]的内容如果检测到第二列有 2,则在右侧插入新列,新列应包含
y=[2 3 4 5]之类的内容
输出应该是这样的:
1 1 x=[1 1 0 3] 3 4
2 2 y=[2 3 4 5] 3 4
3 1 x=[1 1 0 3] 3 4
4 2 y=[2 3 4 5] 3 4
最终,在 MATLAB 中,这是我想要得到的输出:
1 1 1 1 0 3 3 4
2 2 2 3 4 5 3 4
3 1 1 1 0 3 3 4
4 2 2 3 4 5 3 4
我试过的是:
test=dlmread('testfile.txt','\t');
m=length(test);
for i=1:m
if find(test(:,2)==1)>0
x=[1 1 0 3];
test=[test(:,1) x test(:,3:4)];
elseif find(test(:,2)==2)>0
y=[2 3 4 5];
test=[test(:,1) y test(:,3:4)];
dlmwrite('testfile.txt',test,'delimiter','\t','precision','%.4f');
end
end
我得到的错误如下:
被连接的矩阵的维度不一致。
错误来自以下语句:
Error in : test=[test(:,1) x test(:,3:4)]
如果有人可以帮助我,我将非常感激,因为我是 MATLAB 的新手。
提前致谢!
【问题讨论】:
-
如果第二列是
[1; 2; 3; 1]怎么办?这会发生吗?