作业帮 > 综合 > 作业

matlab中 要输出矩阵的坐标和对应的数据分三列输出,例如 A=[21 42;4 5] 如下 1 1 21 1 2 4

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/30 07:12:01
matlab中 要输出矩阵的坐标和对应的数据分三列输出,例如 A=[21 42;4 5] 如下 1 1 21 1 2 42 2 1 4 2 2 5
怎么解决
a矩阵输出如下结果,显示在txt中
1 1 21
1 2 42
2 1 4
2 2 5
有两种方法.
1.将原矩阵相邻三列取出作为新矩阵的行.
a=[1 1 21 1 2 42 2 1 4 2 2 5];%取完前三列再取后三列
k=1;
for i=1:3:12
b(k,:)=a(:,i:i+2);
k=k+1;
end
b
运行结果:

2.将原矩阵每隔两列(每三列)取出作为新矩阵的列.
c=[1 1 21 1 2 42 2 1 4 2 2 5];%取一个数中间隔两个数再取一个数
for i=1:3
d(:,i)=c(:,i:3:12)';
end
d

程序见附件.

再问: 不好意思,我没说清楚,让你理解错了, 我是要将矩阵的数据输出到txt 或者excel中三列的。而且原始矩阵数据量很大
再答: 确实看错了0.0,修改程序如下:A=[21 42;4 5];
[m,n,data]=find(A);
dst=[m,n,data]; 
dst
save data.txt -ascii dst结果:
生成txt保存内容为:  1.0000000e+000  1.0000000e+000  2.1000000e+001  2.0000000e+000  1.0000000e+000  4.0000000e+000  1.0000000e+000  2.0000000e+000  4.2000000e+001  2.0000000e+000  2.0000000e+000  5.0000000e+000
再问: 我想要的是这样的数据格式,我要一行行的按列撤出输出,比如3x4的矩阵,要输出如下 1 1 数据 1 2 数据 1 3 数据 1 4 数据 2 1 数据 2 2 数据 2 3 数据 2 4 数据 3 1 数据 : : 数据
再答: 我改啊改。A=[21 42;4 5];
[m,n]=size(A);
z=1;
for i=1:m
    for k=1:n
        B(z,:)=[i k A(i,k)];
        z=z+1;
    end
end
B
save data.txt -ascii B运行结果:绝对可以了。0.0!
再问: 非常感谢哈,可以输出如下这种的吗 1.0000000e+000 1.0000000e+000 数据 1.0000000e+000 2.0000000e+000 数据 1.0000000e+000 3.0000000e+000 数据 1.0000000e+000 4.0000000e+000 数据
再答: 可以换一种输出方式,输出txt内容均为整数。
A=[21 42;4 5];
[m,n]=size(A);
z=1;
for i=1:m
    for k=1:n
        B(z,:)=[i k A(i,k)];
        z=z+1;
    end
end
fid=fopen('data.txt','wt');%wt是以文本方式写入data.txt
[m,n]=size(B);
for i=1:m
    for j=1:n
        if j==n
            fprintf(fid,'%d\n',B(i,j));% %d 整数输出,\n换行
        else
            fprintf(fid,'%d\t',B(i,j));% \t空格
        end
    end
end
fclose(fid);%关闭文件这时txt文件内容都是整数表示,调用时使用 f=load('data.txt')即可。如果你想前两列按科学技术法表示,只需将“ fprintf(fid,'%d\t',B(i,j));% \t空格”语句中“%g”改为“%e”即可。