how to not plot NaN but still have same array length
显示 更早的评论
I have y = array of 10000 data. A lot of them are NaN. I dont want to plot NaN but if I use plot(y(~isnan(y)),'o'); my plot only goes up to ~1000. It should still go up to 10000 but not plot those with NaN. How can i do this ?
1 个评论
Mario
2026-6-27,12:46
just add xlim([0 10000]) after the plot expression without ~isnan
采纳的回答
更多回答(1 个)
Image Analyst
2016-11-25
Your code basically extracts the non-nan elements and plots only those so it won't go all the way up to 1000. You need to plot x also to have it still go up to 1000. See this little demo:
numPoints = 200; % Make 1000 if you want. I used 200 to make it easier to see what's going on.
% Make sine wave sample data.
x = 1 : numPoints;
period = 200;
y = sin(2 * pi * x / period);
% Introduce 80 nans
nanLocations = randi(length(x), 1, 80);
y(nanLocations) = nan;
% Plot entire array, even the nans, which won't appear.
plot(x, y, 'bo-', 'LineWidth', 2);
grid on;
% Set up figure properties:
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
% Get rid of tool bar and pulldown menus that are along top of figure.
set(gcf, 'Toolbar', 'none', 'Menu', 'none');
% Give a name to the title bar.
set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')

2 个评论
atek
2018-2-9
what if y(1:100) = NaN? Matlab begins plotting at first real value, and I want it to plot NaN's as blank spaces
Walter Roberson
2018-2-9
Use xlim() to force the left boundary to start at 0
类别
在 帮助中心 和 File Exchange 中查找有关 Annotations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!