how to change axis of a matix?

15 Ansichten (letzte 30 Tage)
Asliddin Komilov
Asliddin Komilov am 13 Sep. 2019
Bearbeitet: Bruno Luong am 15 Sep. 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 Kommentare
Asliddin Komilov
Asliddin Komilov am 14 Sep. 2019
I also suspect that length(c)=y*z, still need to know how to do it.
Walter Roberson
Walter Roberson am 14 Sep. 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.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Bruno Luong
Bruno Luong am 15 Sep. 2019
Bearbeitet: Bruno Luong am 15 Sep. 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

Weitere Antworten (1)

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

Melden Sie sich an, um zu kommentieren.

Produkte


Version

R2016a

Community Treasure Hunt

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

Start Hunting!

Translated by