怎样在matlab中把矩阵的两列合并成一列,只是把两列的数据放在一起

比如a=【1 2 3 4; b=【1 2.3 4;

5 6 7 8 ; 5 6.7 8;
9 10 11 12】,变成 9 10.11 12】
就是把中间两列放在一起,中间加个点,matlab处理数据月份和日期是分开放的,不好作图,求大神指点!
最新回答
烟雨蒙蒙

2024-08-11 04:39:44

clc;
clear;
a=[1 2 3 4;
5 6 7 8;
9 10 11 12];
%取第三列元素
temp=a(:,3);
m=length(temp);
for i=1:m
%先取元素
t=temp(i);
t2(i)=0;
%t2将保存第三别的位数
while abs(t-0)>=1
t2(i)=t2(i)+1;
t=t/10;
end
end
t2=(10.^(-1*(t2)));
t2=t2';
a=[a(:,1),a(:,2)+(t2.*a(:,3)),a(:,4)]
怪味

2024-08-11 12:54:41

如果单纯合并两列,这样试试。
a=[a(:,1),a(:,2)+0.1*a(:,3),a(:,4)]
format short g
追问
谢谢,看明白了,但是我要合并的是月份和日,日有十位和个位之分,*0.01会比较好吧。‘format short g’是什么意思?
追答
我是针对你给的矩阵a回答的,你的问题一定有办法解决。只是不知道你的具体问题。方法有的是。
a=[1 2 3 4;5 6 7 8;9 10 11 12];b=[a(:,1),a(:,2)+0.1*a(:,3),a(:,4)];
结果b =
1.0000 2.3000 4.0000
5.0000 6.7000 8.0000
9.0000 11.1000 12.0000
这样比较难看。
输入命令format short g%(数字输出格式命令)
后你再输入
b
结果是b =
1 2.3 4
5 6.7 8
9 11.1 12
这样就好看点了。
要将11.1后面的零显示出来,需要采用别的输出格式。
那个觉悟壮志的方法就行啊。
ps:采用答案给错了人,没有给能解决你问题的人。
追问
谢谢,因为我发现之前自己的问题就不对,和他有同样的想法。后来决定采用距离某天的天数做坐标了。源数据太多了,是61年逐日的。还是十分感谢!!
失心疯〆

2024-08-11 02:04:17

放在一起不难,但有两个问题:
1、两列数据都是整数吗?
2、这样放在一起你认为含义靠谱吗?比如2.2>2.11?
追问
是整数,一列是月份,一列是日,放在一起想要画图的时候横坐标是某月某日,比如4月13日在坐标轴上显示的是4.13,,用strcat的话会放在列的后边,也会使其他列没有了。或者有没有其他办法,因为数据中的月份和日是分开的。。
追答
时间日期数据应该用时间日期的相关函数来处理,不应该像你现在这样。

比如我刚才说的,按照你原来的写法,4月2日是4.2,4月13日是4.13,4月2日反而比4月13日大。
就算是把天数乘以0.01再相加也是不合适的,那样4月30日到5月1日的距离本来只是1天,但坐标轴上的距离却成了71天,显然不对。

你最好把你现在画图的效果贴出来,说明存在什么问题,以及希望达到什么样的效果,我再帮你。