作业帮 > 综合 > 作业

关于Matlab画出数据图形的问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/03 06:57:35
关于Matlab画出数据图形的问题
如图,第一列代表的是时间单位是秒,第七列代表的是磁感应强度数据,怎么把这86400个数据画成磁感应-时间图?是不是通过采样,比如以50s为间隔,这样画出1728个段图再连接起来?具体怎么画?求指导.

先把cell数组转换成数值类型的矩阵,然后直接画图就可以了:
t = cell2mat(data(:,1));
d = cell2mat(data(:,7));
plot(t,d)
如果嫌数据点太多,想要间隔50采样,可把最后一句改成
plot(t(1:50:end),d(1:50:end))
再问: 如果最后一列是三个分量,比如三维呢,又该怎么操作?最后一列前面2个分量乘10*3
再答: 1、三维要看是行向量还是列向量,两者的处理方法是不一样的。 2、【最后一列前面2个分量乘10*3】,引用数据的时候直接乘不就行了? 3、三维数据你打算怎样画图?分别对t画线?
再问: 不好意思 ,回来晚了。我去看Matlab教程了,三维是列向量,是对地磁场XYZ三个方向的分量,单独用t画出它们的谱线图。2里面说到的其实是分量后面的数量级不一样。
再答: 对于列向量,用下面的语句提取数据为nx3的矩阵:d = cell2mat(data(:,end)')';得到了矩阵,后面该怎么画图应该清楚了吧?比如说,如果没有其它要求,可以直接用plot(t,d)绘图。如果要把3个列分别画图,并把部分分量乘特定的数,那就用类似下面的方式(第二个方向的数据乘以10*3):plot(t,d(:,2)*10*3)
再问: 图前几天大概画出来了,现在就是想把坐标轴的精度进行调节。如图,在想着怎么把横坐标轴的间隔怎么调小

再答: 不知道你所说【把横坐标轴的间隔怎么调小】是什么意思?再具体一点?
再问: 上面图中俩刻度之间的数量级还是10*4级别的,能不能再降小点,比如降到10*3级别。达到如下图的蓝色线效果,类似谱线图
再答: 抱歉,我完全看不懂你的意思。 不知是的表达有问题,还是我的理解有问题。 我根本也没看到10*4在哪里。上面的图纵坐标是10^6量级,刻度到10^5级,和10*4有什么关系?
再问: 噢,打错了,横坐标数量级是10的4次方
再答: 但是上面的图横坐标分明是10^8量级啊? 您能不能稍微用点心,把需求说清楚一点?那样既有利于你的问题早点解决,也能避免无谓地浪费他人时间。
再问: 我是讲分度值啊,就是间隔啊。。。。
再答: 间隔可以调小,但你不觉得那样会太密集吗?过于密集会导致根本看不清坐标值。
再问: 我导师当时告诉我用奈奎斯特采样频率来分段,我本打算分成24段,因为这其实是一个标量磁力计一天接收的数据,对应的是一秒一个,一天24*60*60=86400个,但最高频率已经是1Hz,奈奎斯特采样频率应该至少大于2Hz,但实际上没什么意义。但他给我的思路是将86400个数据分段,我大概看了下这些数据,分成24段,每段3600个比较合理,所以我才问怎么把横坐标的间隔,也就是分度值降低。
再答: 1、我没太理解你说的【分成24段】是什么意思,如果是说把数据按照范围分成24组分别绘图,那样每个图的坐标范围都减小了一个数量级,应该很自然的分度也会变小。 2、可以强制指定更小的分度,例如xl=[[7.8071e8 7.808e8]];
set(gca,'xlim',xl,'xtick',xl(1):1e3:xl(2))就能把上图的分度间隔变成1000,但间隔太密集,根本没法看。 3、但不论上面哪种做法,间隔虽然变小了,但由于坐标的显示只是4位小数,所以会出现显示相邻的很多Tick上的数都一样的情况。这可以通过设置TickLabel解决,但比较繁琐,而且还会带来其它的问题,不建议使用。