Azzera filtri
Azzera filtri

how to change axis of a matix?

14 visualizzazioni (ultimi 30 giorni)
Asliddin Komilov
Asliddin Komilov il 13 Set 2019
Modificato: Bruno Luong il 15 Set 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 Commenti
Asliddin Komilov
Asliddin Komilov il 14 Set 2019
I also suspect that length(c)=y*z, still need to know how to do it.
Walter Roberson
Walter Roberson il 14 Set 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.

Accedi per commentare.

Risposta accettata

Bruno Luong
Bruno Luong il 15 Set 2019
Modificato: Bruno Luong il 15 Set 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

Più risposte (1)

Walter Roberson
Walter Roberson il 14 Set 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 Commenti
Asliddin Komilov
Asliddin Komilov il 15 Set 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 il 15 Set 2019
(y-z)/y is 1-z/y and since z and y both include 0, you still have nan and infinities.

Accedi per commentare.

Prodotti


Release

R2016a

Community Treasure Hunt

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

Start Hunting!

Translated by