簡體   English   中英

在MATLAB中使用if..else語句分割圖

[英]Splitting a plot with if..else statement in matlab

我只想在特定值之前和之后以兩種不同的樣式繪制函數。 例如,對於線寬為1的-2*pi<= x <0對於線寬為2的0<= x <=2*pi ,我已經寫過

for x=-2*pi:0.1:2*pi
   y = sin(x);
   if x < 0
     plot(x,y,'LineWidth',1)
     grid on
     hold
   else
     plot(x,y,'LineWidth',2)
     grid on
     hold
   end
end

但這不起作用

無需循環,只需定義布爾值的向量即可定義區域:

x = -2*pi:0.1:2*pi;
y = sin(x);
idx_period1 = (x >= -2*pi) & (x < 0);
idx_period2 = ~[idx_period1(2:end),false]; % ensure the regions touch.
plot(x(idx_period1),y(idx_period1),'LineWidth',1);
hold on
plot(x(idx_period2),y(idx_period2),'LineWidth',2);

如果您要點而不是連接線,請使用,

idx_period1 = (x >= -2*pi) & (x < 0);
idx_period2 = ~idx_period1;
scatter(x(idx_period1),y(idx_period1),'Marker','.','MarkerSize',1);
hold on
scatter(x(idx_period2),y(idx_period2),'Marker','.','Markersize',2);

您的代碼即將完成。 您只需要在手動定義軸即可。 這是修改后的版本。

figure(1); hold on; 
axis([-2*pi 2*pi -1.5 1.5]);
for x=-2*pi:0.1:2*pi
   y = sin(x);
   if x < 0
     plot(x,y,'-o', 'LineWidth',1)
%      grid on
%      hold
   else
     plot(x,y, 'r+', 'LineWidth',2)
%      grid on
%      hold
   end
end
grid on;
hold off;

但是,@ Phil的方法會更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM