MATLAB:使用条件函数调整向量大小
我有三个向量:状态、位置和索引。每个有50个元素。我试图为位置和索引生成一个图表,但前提是state的值在2到5之间。例如,对于数据: 0 13 3 2241 1182 5710 我希望代码只为值24,1和71,0绘制第二行和第四行的点(因为状态介于2和5之间)MATLAB:使用条件函数调整向量大小,matlab,vector,Matlab,Vector,我有三个向量:状态、位置和索引。每个有50个元素。我试图为位置和索引生成一个图表,但前提是state的值在2到5之间。例如,对于数据: 0 13 3 2241 1182 5710 我希望代码只为值24,1和71,0绘制第二行和第四行的点(因为状态介于2和5之间) 非常感谢您的帮助 还不错。首先创建一个逻辑向量,我们在其中搜索介于2和5之间的状态。然后,使用此逻辑向量对位置和索引向量子集,以提取此信息。假设向量被称为状态、位置和索引,则可以执行以下操作: loc = state >= 2 &
非常感谢您的帮助 还不错。首先创建一个
逻辑
向量,我们在其中搜索介于2和5之间的状态。然后,使用此逻辑向量对位置
和索引
向量子集,以提取此信息。假设向量被称为状态
、位置
和索引
,则可以执行以下操作:
loc = state >= 2 & state <= 5;
stateFinal = state(loc);
positionFinal = position(loc);
indexFinal = index(loc);
figure;
plot(indexFinal, positionFinal, 'b.', 'MarkerSize', 14);
xlabel('Index');
ylabel('Position');
在这里,州2的颜色编码为红色,州3的颜色编码为绿色,州4的颜色编码为蓝色,州5的颜色编码为黑色。我还加入了一个传说,以防你感到困惑
如果这不是你想要的,请在这篇文章上给我留言让我知道。但是,根据索引是否在2和5之间来对数据进行子集的逻辑是问题中最重要的一点,这是上面显示的代码的前四行。太好了!工作得很好!想帮我把点改成指定长度的小线吗?我不想让线路连接…@user3788687-不客气。当然我很乐意帮忙。你说的“小线条”是什么意思?你的意思是在每个点之间画虚线吗?。比如:?看红线。@user3788687-我修改了我的帖子,给你更多的奖励代码。我也误读了你的帖子。当索引在x轴上时,要在y轴上打印位置。让我知道关于“小线条”的部分。
colours = 'rgbk';
figure;
hold on;
for idx = 2 : 5
stt = stateFinal == idx;
pos = positionFinal(stt);
ind = indexFinal(stt);
plot(ind, pos, [colours(idx-1) '.'], 'MarkerSize', 14);
end
xlabel('Index');
ylabel('Position');
legend('State 2', 'State 3', 'State 4', 'State 5');