如何在Matlab中的.dat文件中保存已保存矩阵中的列

时间:2014-08-03 14:55:18

标签: matlab

我是cheema,想要将矩阵形式的值(在列中)保存到.dat文件中保存的矩阵。

实际上,当我只有一个标量值时,我可以成功添加保留前一个值的新值,但是想要将完整的列添加到保存的矩阵中,保留以前的值。这样我就可以从头到尾绘制所有值。主题在代码中描述:

for i=1:100
 k=i+5;
 l=i+2;

a=[k l];
b=[k1 l1];
c=abs(a-b);
h=(k+k1)/2;
h1=(h+k1)/2;
h2=(h+k)/2;
h3=(h1+k1)/2;
h4=(h+h1)/2;
h5=(h+h2)/2;
h6=(h2+k)/2;
h7=(h3+k1)/2;
h8=(h1+h3)/2;
h9=(h1+h4)/2;
h10=(h+h4)/2;
h11=(h+h5)/2;
h12=(h5+h2)/2;
h13=(h2+h6)/2;
h14=(h6+k)/2;
g=(l+l1)/2;
g1=(g+l1)/2;
g2=(g+l)/2;
g3=(g1+l1)/2;
g4=(g+g1)/2;
g5=(g+g2)/2;
g6=(g2+l)/2;
g7=(g3+l1)/2;
g8=(g1+g3)/2;
g9=(g1+g4)/2;
g10=(g+g4)/2;
g11=(g+g5)/2;
g12=(g5+g2)/2;
g13=(g2+g6)/2;
g14=(g6+l)/2;

if c>=[0 0] & c<[8 5]
    k2=k;
    l2=l;
elseif c>=[8 0]& c<[12 5]
    k2=[h;k];
    l2=[l;l];
elseif c>=[12 0] & c<[25 5]
    k2=[h1;h;h2;k];
    l2=[l;l;l;l];
elseif c>=[25 0] & c<[50 5]
    k2=[h3;h1;h4;h;h5;h2;h6;k];
    l2=[l;l;l;l;l;l;l;l];
elseif c>=[0 5] & c<[8 10]
    k2=[k;k];
    l2=[g;l];
elseif c>=[0 10] & c<[8 25]
    k2=[k;k;k;k];
    l2=[g1;g;g2;l];
elseif c>=[0 25] & c<[8 50]
    k2=[h;h;h;h;h;h;h;h];
    l2=[g3;g1;g4;g;g5;g2;g6;l];
elseif c>=[8 5] & c<[12 10]
    k2=[h;k];
    l2=[g;l];
elseif c>=[8 10] & c<[12 25]
    k2=[h;h;k;k];
    l2=[g1;g;g2;l];
elseif c>=[8 25] & c<[12 50]
    k2=[h;h;h;h;k;k;k;k];
    l2=[g3;g1;g4;g;g5;g2;g6;l];
elseif c>=[12 5] & c<[25 10]
    k2=[h1;h;h2;k];
    l2=[g;g;l;l];
elseif c>=[12 10] & c<[25 25]
    k2=[h1;h;h2;k];
    l2=[g1;g;g2;l];
elseif c>=[12 25] & c<[25 50]
    k2=[h1;h1;h;h;h2;h2;k;k];
    l2=[g3;g1;g4;g;g5;g2;g6;l];
elseif c>=[25 5] & c<[50 10]
    k2=[h3;h1;h4;h;h5;h2;h6;k];
    l2=[g;g;g;g;l;l;l;l];
elseif c>=[25 10] & c<[50 25]
    k2=[h3;h1;h4;h;h5;h2;h6;k];
    l2=[g1;g1;g;g;g2;g2;l;l];
elseif c>=[25 25] & c<[50 50]
    k2=[h3;h1;h4;h;h5;h2;h6;k];
    l2=[g3;g1;g4;g;g5;g2;g6;l];
else
    k2=[h7;h3;h8;h1;h9;h4;h10;h;h11;h5;h12;h2;h13;h6;h14;k];
    l2=[g7;g3;g8;g1;g9;g4;g10;g;g11;g5;g12;g2;g13;g6;g14;l];
end
q(i,:)=[k2 l2];


 save path.dat q -ascii;


 x=path(:,1);
 y=path(:,2);
plot(x,y,'-o')
 k1=k;
  l1=l;
end

我收到错误:

  

在作业A(I)= B中,B和I中的元素数必须相同       q(i,:)= [k2 l2];

我会非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

q(i,:)=[k2 l2];不起作用,因为k2和12都是nx1矩阵,并且你正在为它指定q(i,:),它应该基本上是行矩阵。所以q(i,:) = [k2' l2'];会更准确..

只是一个建议,如果你在循环中计算a和b并在循环外做其他计算,你的代码会更容易。

代码:

A = [1 ;2; 3; 4; 5; 6; 7];
A = [A ;8 ;9];