how to change axis of a matix?

15 visualizaciones (últimos 30 días)
Asliddin Komilov
Asliddin Komilov el 13 de Sept. de 2019
Editada: Bruno Luong el 15 de Sept. de 2019
my matrix is M(x,y,z) where:
x=1:90
y=1:3:120
z=1:40
and
c=y./z
and I need to convert M into N(x,c).
Any ideas?
  6 comentarios
Asliddin Komilov
Asliddin Komilov el 14 de Sept. de 2019
I also suspect that length(c)=y*z, still need to know how to do it.
Walter Roberson
Walter Roberson el 14 de Sept. de 2019
No, length of y and z are the same and y./z would have the same length.
Some of what you wrote does not seem to make sense until you start talking about grids of data, but then you have to ask about the sizes of the grids.

Iniciar sesión para comentar.

Respuesta aceptada

Bruno Luong
Bruno Luong el 15 de Sept. de 2019
Editada: Bruno Luong el 15 de Sept. de 2019
load('testdata.mat');
Ufun = @(X,Y,Z) X;
Vfun = @(X,Y,Z) Y./(Z+200);
[X,Y,Z] = ndgrid(x,y,z);
U = Ufun(X,Y,Z);
V = Vfun(X,Y,Z);
U = U(:);
V = V(:);
[umin,umax] = bounds(U);
nu = 21;
u = linspace(umin,umax,nu);
[vmin,vmax] = bounds(V);
nv = 21;
v = linspace(vmin,vmax,nv);
[~,~,I] = histcounts(U,u);
[~,~,J] = histcounts(V,v);
N = accumarray([J I], M(:), [nu nv]-1, @mean, NaN);
midfun = @(x) 0.5*(x(1:end-1)+x(2:end));
u = midfun(u);
v = midfun(v);
surf(u,v,N);
xlabel('u (=x)');
ylabel('v (=y/(200+z)');
mapping3D.png

Más respuestas (1)

Walter Roberson
Walter Roberson el 14 de Sept. de 2019
[X, Y, Z]=ndgrid(1:90,1:3:120,1:40);
C = round(ceil(Y./Z));
N = accumarray([X(:), C(:)], M(:), [], @mean, nan);
surf(N, 'edgecolor', 'none')
xlabel('x')
ylabel('c')
Or possibly N.' instead of N
  8 comentarios
Asliddin Komilov
Asliddin Komilov el 15 de Sept. de 2019
I may use C=((y-z)./y); main thing is to obtain the value of M at x by some ratio of y and z, so I can make surface out of it.
Walter Roberson
Walter Roberson el 15 de Sept. de 2019
(y-z)/y is 1-z/y and since z and y both include 0, you still have nan and infinities.

Iniciar sesión para comentar.

Categorías

Más información sobre Logical en Help Center y File Exchange.

Productos


Versión

R2016a

Community Treasure Hunt

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

Start Hunting!

Translated by