Calculation with Certain Portion of the Matrices

2 vues (au cours des 30 derniers jours)
Cem Tuncer
Cem Tuncer le 14 Avr 2019
Commenté : Cem Tuncer le 14 Avr 2019
xm = 0:0.1:6; ym =3:0.1:9;
[x, y] = meshgrid(xm,ym);
angle = asind((-x.^2.*y.^2-y.^4+1296)./(2.*x.*y.^3));
angle = real(angle);
z2 = 6./(x.*sind(angle)+y);
figure
contourf(x,angle,z2,0.82:0.03:2.2,'ShowText','on');
For the above code, I want to calculate z2 for the matrix elements of angles having the values between (-40) to 20 degrees, other values must vanish from the matrix. I know for these purpose x and y matrices should match with the angle matrix and they also need to be arranged, but ı couldn't manage the issue.
As a note, limiting the plotting axis is not the point because I will use the data for another calculation, I want to clear out unwanted parts of the data.
  1 commentaire
Cem Tuncer
Cem Tuncer le 14 Avr 2019
Guys it seems working:
indices = find(angle<-50);
angle(indices) = NaN;
indices = find(angle>30);
angle(indices) = NaN;
But it gives some saw-like result, I am open to other suggestions.

Connectez-vous pour commenter.

Réponse acceptée

Guillaume
Guillaume le 14 Avr 2019
The only way you're going to avoid that sawtooth effect is by starting with a meshgridded x and angle and calculating y from that. That would involve working out the equation of y against angle and x. If you can't do that, then you can reduce but not completely elimiate the sawtooth effect by using a finer grid.
I find it a bit weird that it is the angle matrix that you set to NaN. For contourf it doesn't matter but I would have thought that setting the z2 matrix to NaN would make more sense if that's the one you're going to use for further calculation.
Note that find is rarely needed and it's certainly not needed in the code you wrote:
indices = angle < -50;
angle(indices) = NaN;
indices = angle > 30;
angle(indices) = Nan;
would produce the same result. This can be simplified into a one-liner:
angle(angle < -50 | angle > 30) = NaN;
and as said, it's probably better to alter z2 instead of angle, so I'd replace that by:
z2(angle < -50 | angle > 30) = NaN;
  1 commentaire
Cem Tuncer
Cem Tuncer le 14 Avr 2019
Thank you, it is better and accurate representation indeed. And I changed step size to obtain finer grid in meshgrid x-y, and it worked to eleminate sawtooth structure.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Line Plots 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