Shifting column with data

4 vues (au cours des 30 derniers jours)
SugerCodeCude
SugerCodeCude le 4 Juil 2019
Commenté : SugerCodeCude le 4 Juil 2019
From the picture I would like to move everything from the column 2 between 120(degree) and 240(degrees), shifted one time to the left and shifted down one more time. Next, for column 3 between 240 (degree) and 360(degree), shift two times to the left and two times down.
Below is the code to the graph from the picture. I am not sure how to proceed. If you need clarification I can do so.
for i = 1:N
if (TFx(i) == 0) && (TFy(i) == 0)
if (sOnAngleH0(i)>=xBotEdge && sOnAngleH0(i)<=xTopEdge...
&& AngleHa(i)>=yBotEdge && AngleHa(i)<=yTopEdge)
xi = ceil((sOnAngleH0(i)-xBotEdge)/[(xTopEdge - xBotEdge)/row]);
yj = ceil((AngleHa(i)-yBotEdge)/[(yTopEdge - yBotEdge)/col]);
jointBins(xi, yj) = jointBins(xi, yj) + 1;
end
end
end
Any help is most appreciated.
P.S. I need the data of the columns being shift to overlay on the other data points, after all the columns shift all the diagonal points all to be in 0 < x < 120 and 0 < y < 120.

Réponse acceptée

KSSV
KSSV le 4 Juil 2019
YOu may proceed some thinkg like this:
[X,Y] = meshgrid(1:10,1:10) ;
Z = diag(1:9,-1)+diag(1:10)+diag(1:9,1) ;
Z = fliplr(Z) ;
figure(1)
pcolor(X,Y,Z)
% to move this chunk
[X1,Y1] = meshgrid(4:7,4:7) ;
Z1 = interp2(X,Y,Z,X1,Y1) ;
% to this chunk
[X2,Y2] = meshgrid(1:4,1:4) ;
Z2 = Z ;
Z2(1:4,1:4) = Z1 ;
figure(2)
pcolor(X,Y,Z2)
  2 commentaires
SugerCodeCude
SugerCodeCude le 4 Juil 2019
Thank you for you quick response,
I am testing the code you have provied, when I shift this it overlay the data or does it change and it replaces it with what has been shifted?
KSSV
KSSV le 4 Juil 2019
Run the code and analysie it....I have replaced there....you can make necessary changes.

Connectez-vous pour commenter.

Plus de réponses (1)

SugerCodeCude
SugerCodeCude le 4 Juil 2019
The code works great, however I put in my jointBins and in a area to then move. I get a error
% to move this chunk
[X1,Y1] = jointBins(4:7,4:7) ;
because it is 10x10, error is
Insufficient number of outputs from right hand side of equal sign to satisfy assignment.
in my code the row = 10 and col = 10
and
xTopEdge = 360
xBotEdge = 0
yTopEdge = 360
yBotEdge = 0
  2 commentaires
KSSV
KSSV le 4 Juil 2019
Your data will be:
x = linspace(0,360,10) ;
y = linspace(0,360,10) ;
[X,Y] = meshgrid(x,y) ;
SugerCodeCude
SugerCodeCude le 4 Juil 2019
Thank you for all you help!

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by