更改部分信号MATLAB

时间:2017-12-14 22:32:16

标签: matlab plot

我有一个简单的情节如下

enter image description here

我想选择50到100之间的信号并将颜色更改为红色。这是我写的代码

close all
clear all
clc

%%

t=1:200 ;
 y=sin(t);

 figure (1), hold on, plot(t, y); 
 [x1,y1] = ginput(2)


figure(2), hold on, plot(t,y,'b'), plot(t(t>=x1(1)), y(t(t>=x1(1))), 
'r',t(t<=x1(2)), y(t(t<=x1(2))),'b')

但我收到的内容在逻辑上不正确

enter image description here

我想将50到100之间的样本颜色更改为红色。你能告诉我怎么做吗? (我检查了

t(x1(1)<t<x1(2))但它不起作用。

1 个答案:

答案 0 :(得分:4)

请注意y(t(t>=x1(1))在这种情况下有效,因为t=1:200对应y的索引。

要解决您的问题,您只需使用逻辑索引找到正确的值。

t=1:200;
y=sin(t);

figure (1), hold on, plot(t, y); 
[x1,y1] = ginput(2);

dt = t(2)-t(1);
figure(2), hold on;
rng1 = t < x1(1);
rng2 = (t+dt) >= x1(1) & (t-dt) <= x1(2);
rng3 = t > x1(2);
plot(t(rng1), y(rng1), 'b');
plot(t(rng2), y(rng2), 'r');
plot(t(rng3), y(rng3), 'b');

编辑我意识到我可能会在情节中留下空白。扩展了不平等以纠正这一点。