plotting figure ignore blank entries

9 ビュー (過去 30 日間)
Emily Platt
Emily Platt 2021 年 5 月 19 日
コメント済み: Adam Danz 2021 年 5 月 22 日
hello
i have a cell array with 5000+ rows and 1 column
i was to plot a figure but my problem is that there are many blank entries. i want the figure to consider plots from the previous entry that has a number to the next one (i.e. i will be doing a stacked time series so i dont want these empty cells to be completely ignored)
  3 件のコメント
Adam Danz
Adam Danz 2021 年 5 月 20 日
I'm guessing your data has NaN values. You need to remove or fill in the NaN values.
Emily Platt
Emily Platt 2021 年 5 月 20 日
TapsX=
'321'
''
''
''
''
''
''
''
'264'
''
''
''
''
''
''
''
'301'
...
so between every value there are 7 empty cells
I want to use the plot function to make a simple one line figure

サインインしてコメントする。

採用された回答

Adam Danz
Adam Danz 2021 年 5 月 20 日
編集済み: Adam Danz 2021 年 5 月 20 日
Convert the cell array of character vectors or the string array to a numeric vector, then remove NaN values.
% Or string array: TapsX = ["123" "" "" "" "200" "" "" "321" "" ""];
TapsX = {'123' '' '' '' '200' '' '' '321' '' ''};
TapsXnum = str2double(TapsX)
TapsXnum = 1×10
123 NaN NaN NaN 200 NaN NaN 321 NaN NaN
TapsXnum(isnan(TapsXnum)) = []
TapsXnum = 1×3
123 200 321
Since you have TapsX I assume you have TapsY with the same problem. In that case you'll need to remove the elements pair-wise to maintain the paired coordinates.
TapsX = ["123" "94" "" "" "200" "" "88" "321" "" "2"];
TapsY = [ "" "94" "135" "" "200" "" "88" "" "112" "2"];
TapsXnum = str2double(TapsX);
TapsYnum = str2double(TapsY);
nanIdx = isnan(TapsXnum) | isnan(TapsYnum);
TapsXnum(nanIdx) = []
TapsXnum = 1×4
94 200 88 2
TapsYnum(nanIdx) = []
TapsYnum = 1×4
94 200 88 2
Lastly, I suspicious as to why your numeric values are represented as strings in the first place. If the are read in that way from a file, the best solution might be to read them in correctly as numeric values. Why are they strings?
  2 件のコメント
Emily Platt
Emily Platt 2021 年 5 月 22 日
perfect thank you. im working on exisitng data, they saved the data as strings
Adam Danz
Adam Danz 2021 年 5 月 22 日
You shouldn't have too much trouble adapting that to your data. If you have any trouble show us what you've got and I can help straighten it out.

サインインしてコメントする。

その他の回答 (1 件)

Mathieu NOE
Mathieu NOE 2021 年 5 月 20 日
hello
remove first the empty cells , example below (R is the cell array)
R = R(~cellfun('isempty',R));
plot(cell2mat(R))
  1 件のコメント
Adam Danz
Adam Danz 2021 年 5 月 20 日
The output is a char array. If R is a row vector, then the output is one long char vector.
R = {'123' '' '' '' '200' '' '' '321' '' ''}';
R = R(~cellfun('isempty',R))
R = 3×1 cell array
{'123'} {'200'} {'321'}
cell2mat(R)
ans = 3×3 char array
'123' '200' '321'

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeTitle についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by