Filter löschen
Filter löschen

Is it possible to use surf function calling parameters from a 4-D matrix?

5 Ansichten (letzte 30 Tage)
I have an equation which is a fn of four variables. So i created a 4-D matrix to calculate an output, ie Output=f(a,b,c,d) inside a multi for loop of 4.
Now I wish to use the surf command to plot Output as fn of any above 2 variables.
It seems I can only plot a surface if the matrix is of the form Output=f(a,b,c), ie
surf(a,b,output(:,:,1,1)
It does not accept any other variation like
surf(a,b,output(1,:,:,1) etc
So am i restricted to Output=f(a,b,c) inside the for loop?
Thanks in advanced

Akzeptierte Antwort

Wayne King
Wayne King am 29 Sep. 2013
You can use squeeze() to do this
output = randn(20,20,20,20);
surf(squeeze(output(1,:,:,1)))
  2 Kommentare
bugatti79
bugatti79 am 1 Okt. 2013
Bearbeitet: bugatti79 am 1 Okt. 2013
Hi Wayne, I have come across some confusion when selecting parameters from the 4D matrix into the surf command.
Referring to my original message, say I want to issue the following
surf(c,d,squeeze(output(1,1:,:))).
Sometimes the squeeze(output) is a row vector instead of a column vector and it doesn't match with the inputs c,d. So I end up transposing the squeeze(output) and the result 'looks right' but I am doing it rather blindly. So the question I have is
1)If the inputs are column vectors then the output must also be a matching column vector and so I must transpose in order to achieve this?
2)Does the matching work in chronological order? ie,
surf(a,b, squeeze(output(:,:,1,1)
surf(b,c, squeeze(output(1,:,:,1)
surf(c,d, squeeze(output(1,1,:,:)
surf(a,d, squeeze(output(:,1,1,:) etc
Thanks in advanced.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by