plotting figure ignore blank entries

39 ビュー (過去 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 件のコメント
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 件のコメント
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'

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

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by