Extract upper triangle of matrix (using vector different from diagonal)

조회 수: 6 (최근 30일)
Philipp Brunnbauer
Philipp Brunnbauer 2023년 3월 13일
댓글: Philipp Brunnbauer 2023년 3월 15일
Hello, I am trying to extract some data from a matrixt, wherein the upper "triangle" contains the signal I am interested in. I can extract a big chunk of ut using triu(), the issue is the lower bound is not a diagonal, but steeper than the diagnonal (for every row there is about 1.5 columns if that makes sense), causing the upper section to be cut using triu(). Is there a way of doing it with a nested for loop or the like? I am banging my head against a wall here. See pictures for reference.

답변 (1개)

Cameron
Cameron 2023년 3월 13일
If you have the data in a form of X and Y data points, you can do something like this
x = randi([220,800],100,1); %100 random x data points between 220 and 800
y = randi([200,600],100,1); %100 random y data points betwen 200 and 600
myindx = y - 0.5*x >= 0; %index which is above a line from x1 = 400, y1 = 200,
%x2 = 800, y2 = 400. This gives a slope of 0.5 and y intercept of 0.
NewX = x(myindx); %x values only above your myindx line
NewY = y(myindx); %y values only above your myindx line
plot(x,y,'o',...
NewX,NewY,'o',...
[400,800],[200,400],'-k')
  댓글 수: 2
Philipp Brunnbauer
Philipp Brunnbauer 2023년 3월 13일
this is great, will try it! Thanks Cameron
Philipp Brunnbauer
Philipp Brunnbauer 2023년 3월 15일
Hey Cameron, I had to modify the script a bit and now have a working version of it - thanks a lot!

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by