shanlihong 发表于 2007-8-1 16:09

如何保存这个二维数组

我想把循环中一个二维数组保存下来,这个数组每次循环都要更新,
该如何实现呢?   例如:
for j=1:5
   for i=1:j+1
       a=i+1;
       b=i*i;
       c=;
   end
end
怎样能保存j分别为1,2,3,4,5时c矩阵的值

花如月 发表于 2007-8-1 16:24

A=zeros(2,2,5);
for j=1:5
   for i=1:j+1
       a=i+1;
       b=i*i;
       c=;
   end
A(:,:,j)=c
end
可以满足你的要求,但是不一定是最简单的形式。
建议利用数据的规律去掉循环

xjzuo 发表于 2007-8-1 17:15

这个问题也可以用元胞数组存储,而且更简洁。

花如月 发表于 2007-8-1 17:33

单元数组的方式
A=cell(1,5);
for j=1:5
   for i=1:j+1
       a=i+1;
       b=i*i;
       c=;
   end
A{j}=c
end

home96 发表于 2007-8-1 20:09

for j=1:5
    pp=[];
    for i=1:j+1
      a=i+1;
      b=i*i;
      c=;
      pp=;
   end
   pp
end
可以保存j分别为1,2,3,4,5时c矩阵的值

[ 本帖最后由 home96 于 2007-8-1 20:35 编辑 ]

shanlihong 发表于 2007-8-2 11:06

再请问一下,如果这个C矩阵维数比较大,如30*30阶,想把 C以矩阵的格式保存到文件中以便以后利用这个矩阵,可下面的代码不能实现,该怎办呢?
    A=zeros(2,2,5);
for j=1:5
   for i=1:j+1
       a=i+1;
       b=i*i;
       c=;
   end
A(:,:,j)=c;
   fid_out=fopen(c.dat','w')
    fprintf(fid_out,'%4d',A);
    fclose(fid_out);
end

花如月 发表于 2007-8-2 12:26

回复 #6 shanlihong 的帖子

可以实现的,不管数据是存到cell数组还是矩阵。都可以存成mat格式,我觉得存成mat格式没有txt格式方便(个人看法)。txt数据的存取可以参考eight的精华帖子

shanlihong 发表于 2007-8-3 09:38

查看了eight的精华帖子
-----使用文本文件进行数据存取的技巧总结----,学会了如何对已有的txt文件操作

问题是如何将下面在窗口输出的A阵保存为文本文件,若A矩阵维数比较大,如30*30阶,怎样才能保存为30*30的矩阵格式呢
A=zeros(2,2,5);
for j=1:5
   for i=1:j+1
       a=i+1;
       b=i*i;
       c=;
   end
A(:,:,j)=c
end

eight 发表于 2007-8-3 11:35

原帖由 shanlihong 于 2007-8-3 09:38 发表 http://www.chinavib.com/forum/images/common/back.gif
查看了eight的精华帖子
-----使用文本文件进行数据存取的技巧总结----,学会了如何对已有的txt文件操作

问题是如何将下面在窗口输出的A阵保存为文本文件,若A矩阵维数比较大,如30*30阶,怎样才能保存为30* ...

如果保存为 mat 格式,直接用 save 就可以了;txt 格式的话,用 fprintf 试试吧

shanlihong 发表于 2007-8-3 15:21

辛苦 花如月和 eight了:handshake
再问个问题:
若想一行输出20个数,fprinft输出格式
fprintf(fid_out,'%4d。。。%d4',A); 省略号里我得写20个%d吗,查了一些书 都找不到该怎样办

[ 本帖最后由 eight 于 2007-8-3 15:31 编辑 ]

花如月 发表于 2007-8-4 16:44

help fprintf

bainhome 发表于 2007-8-4 22:37

书是死的,人是活的:str=['']
for i=1:8
    str=
end
str=
还有其他矩阵扩维不用循环的方法,不过这个是最普遍和广义的方式。

[ 本帖最后由 bainhome 于 2007-8-4 22:38 编辑 ]

eight 发表于 2007-8-6 14:42

原帖由 shanlihong 于 2007-8-3 15:21 发表 http://www.chinavib.com/forum/images/common/back.gif
辛苦 花如月和 eight了:handshake
再问个问题:
若想一行输出20个数,fprinft输出格式
fprintf(fid_out,'%4d。。。%d4',A); 省略号里我得写20个%d吗,查了一些书 都找不到该怎样办

bainhome兄说得没错,其实就一个维数扩充命令 repmat 就可以了

wondersoul 发表于 2007-8-8 16:22

原帖由 home96 于 2007-8-1 20:09 发表 http://www.chinavib.com/forum/images/common/back.gif
for j=1:5
    pp=[];
    for i=1:j+1
      a=i+1;
      b=i*i;
      c=;
      pp=;
   end
   pp
end
可以保存j分别为1,2,3,4,5时c矩阵的值


我运行了下各位的代码,感觉就这个结果对,其他人的运行后没有输出i=1 and j=1时候的值.

wondersoul 发表于 2007-8-8 16:25

原帖由 花如月 于 2007-8-1 17:33 发表 http://www.chinavib.com/forum/images/common/back.gif
单元数组的方式
A=cell(1,5);
for j=1:5
   for i=1:j+1
       a=i+1;
       b=i*i;
       c=;
   end
A{j}=c
end


我运行后输出莫名奇妙的矩阵,我matlab的版本是7.1:@o

[ 本帖最后由 wondersoul 于 2007-8-8 16:32 编辑 ]
页: [1] 2
查看完整版本: 如何保存这个二维数组