How can I plot only certain values from an array?
66 ビュー (過去 30 日間)
古いコメントを表示
hi there, say I have an array [1,3,5,7,1,5,1,7,8,1]. I want to plot ONLY say value 1 from this array in accordance with the index in which the value resides in. so for the above array I want to plot for only value 1 occurrence: the value 1 shows up on index (0,4,6,and 9) so the plot will have an x-axis 1-10 and will only show a spike in the y direction when there is a value of 1 in the array. I have attached a an image as to what the result should look like. please help. thank you in advance. SN
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/146500/image.jpeg)
0 件のコメント
採用された回答
Adam
2014 年 12 月 17 日
編集済み: Adam
2014 年 12 月 17 日
a = [1,3,5,7,1,5,1,7,8,1];
idx = find( a == 1 );
figure; hAxes = gca;
stem( hAxes, idx, ones(numel(idx)) );
xlim( hAxes, [1 10] );
If you want to see the spikes more clearly you can also add e.g.
ylim( hAxes, [0 2] );
1 件のコメント
Thorsten
2014 年 12 月 17 日
編集済み: Thorsten
2014 年 12 月 17 日
Or as a one-liner :-)
stem(find(a==1), ones(numel(find(a==1))), 'k', 'Marker','None', 'LineWidth', 3), box off, axis([0 12 0 2])
and if you want just dots, use plot instead of stem:
plot(find(a==1), ones(numel(find(a==1))), 'ko', 'MarkerSize', 6, 'MarkerFaceColor', 'k')
その他の回答 (2 件)
Sudharsana Iyengar
2014 年 12 月 17 日
just another method. This is round about way and will actually take more time to execute.
j=1;
for i=1:length(a)
if a(i)==1
b(j,1)=i;
b(j,2)=1;
j=j+1;
end
end
plot (b(:,1),b(;,2))
This will store the values of i for which the value is equal to 1. Which you can plot.
0 件のコメント
Ankit Jain
2017 年 4 月 21 日
Above all method are only applicable if the value to be plotted is same, what about if one wants varied values to be plotted?
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Line Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!