Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB:使用条件函数调整向量大小_Matlab_Vector - Fatal编程技术网

MATLAB:使用条件函数调整向量大小

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 &

我有三个向量:状态、位置和索引。每个有50个元素。我试图为位置和索引生成一个图表,但前提是state的值在2到5之间。例如,对于数据:

0 13 3

2241

1182

5710

我希望代码只为值24,1和71,0绘制第二行和第四行的点(因为状态介于2和5之间)


非常感谢您的帮助

还不错。首先创建一个
逻辑
向量,我们在其中搜索介于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');