masking data plots for graph

20 ビュー (過去 30 日間)
cvbnm
cvbnm 2017 年 11 月 18 日
コメント済み: cvbnm 2017 年 11 月 18 日
I want my plot to include my mask:
mask=true(size(x));
mask(0>x)=false;
mask=true(size(y));
mask(0>y)=false;
plot(x(mask),y(mask),'.')
It is not a problem, when I only have to mask the x values or y values seperately, only when I have to plot both masks.
Could the problem be that my mask for x and y respectively aren't having a particular definition? I tried with 'xmask' and 'ymask' and add this to the plotting sequence, but it does not work either.

回答 (2 件)

Walter Roberson
Walter Roberson 2017 年 11 月 18 日
xt = x;
xt(xt<0) = nan;
yt = y;
yt(yt<0) = nan;
plot(xt, yt);
  3 件のコメント
Walter Roberson
Walter Roberson 2017 年 11 月 18 日
mask = (x > 0) & (y > 0);
[b,stats]=robustfit(x(mask),y(mask));
However, this is only going to work if x and y are vectors. If they are 2D then the result of x(mask) and y(mask) is going to be a column vector, because 2D arrays cannot have "holes" in them.
cvbnm
cvbnm 2017 年 11 月 18 日
They are not vectors, so that is maybe why it doesn't work, unfortunately. I added my original code below, just in case my reply to you would be confusing. Does this mean that I can not fit data, with I mask values for both the x- and y-axis?

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


cvbnm
cvbnm 2017 年 11 月 18 日
編集済み: Walter Roberson 2017 年 11 月 18 日
My original code for fitting was:
[b,stats]=robustfit(x(mask),y(mask));
x1=[min(x(mask)),max(x(mask))];
y1= b(1)+b(2)*x1;
hold on
plot(x(mask),y(mask),'.b');
plot(x1,y1,'-r');
This is used for plotting my data and the fitting. When I use both of the two masks, it can not fit my data. There is no problem when I only masks one of the variables (either x or y).

カテゴリ

Help Center および File ExchangeAuthor Block Masks についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by