matlab中 要输出矩阵的坐标和对应的数据分三列输出,例如 A=[21 42;4 5] 如下 1 1 21 1 2 42 2 1 4 2 2 5
答案:1 悬赏:20 手机版
解决时间 2021-11-29 12:26
- 提问者网友:我一贱你就笑
- 2021-11-28 17:39
matlab中 要输出矩阵的坐标和对应的数据分三列输出,例如 A=[21 42;4 5] 如下 1 1 21 1 2 42 2 1 4 2 2 5
最佳答案
- 五星知识达人网友:时间的尘埃
- 2021-11-28 18:32
有两种方法。
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
',B(i,j));% %d 整数输出,
换行
else
fprintf(fid,'%d ',B(i,j));% 空格
end
end
end
fclose(fid);%关闭文件这时txt文件内容都是整数表示,调用时使用 f=load('data.txt')即可。
如果你想前两列按科学技术法表示,只需将“ fprintf(fid,'%d ',B(i,j));% 空格”语句中“%g”改为“%e”即可。
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
程序见附件。
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
',B(i,j));% %d 整数输出,
换行
else
fprintf(fid,'%d ',B(i,j));% 空格
end
end
end
fclose(fid);%关闭文件这时txt文件内容都是整数表示,调用时使用 f=load('data.txt')即可。
如果你想前两列按科学技术法表示,只需将“ fprintf(fid,'%d ',B(i,j));% 空格”语句中“%g”改为“%e”即可。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯