How to plot vertical line when hitting the range?
4 ビュー (過去 30 日間)
古いコメントを表示
Hello, I would like to plot four red lines on the figure.
which is on the edge of yellow block.
But, I don't know how to find and plot it.
Attachment is new.mat , included fx, dy, new value.
The blue blocks are all zero and the yellow blocks are all 1.
Thanks.
![1.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/231822/1.png)
load new.mat
contourf(fx,dy,new,'linestyle','none');
ylabel('Range Cell','FontSize',15,'Fontname','Times');
xlabel('Radial Velocity (m/s)','FontSize',15,'Fontname','Times')
set(gca,'FontSize',15,'Fontname','Times');
2 件のコメント
KSSV
2019 年 7 月 30 日
You can insert lines manually or get the points and plot line...this is one of the option.
採用された回答
Michael Madelaire
2019 年 7 月 30 日
%% Init
clear all; close all; clc;
cd 'C:\Users\s144117\Desktop\mathworks'
%% Load
load('new')
%% Find boarders
boarders = [];
for i=2:length(new(:,1))-1
column_before = new(i-1, :);
column = new(i, :);
column_after = new(i+1, :);
flag_before = sum(column_before == 1) > 0;
flag = sum(column == 1) > 0;
flag_after = sum(column_after == 1) > 0;
if flag_before == 0 && flag == 1
boarders = [boarders, i-1];
elseif flag == 1 && flag_after == 0
boarders = [boarders, i+1];
end
end
%% Plot
contourf(fx,dy,new,'linestyle','none');
ylim = get(gca, 'ylim');
hold on;
for i=1:length(boarders)
plot([1,1]*fx(boarders(i)), ylim, '-', 'Color', 'red')
end
ylabel('Range Cell','FontSize',15,'Fontname','Times');
xlabel('Radial Velocity (m/s)','FontSize',15,'Fontname','Times')
set(gca,'FontSize',15,'Fontname','Times');
2 件のコメント
Michelle Hirsch
2020 年 4 月 14 日
Here's a small simplification for releases since 18b - you can call xline to draw the vertical lines instead of having to use the clever plot([1,1]* ...) trick.
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!