Hi, I would like to plot a snippet of pressureData, which is a 3 dimensional matrix, as follows:
tDim=length(pressureData(1,1,:)); t=zeros(1,tDim); dt=0.01;
for ii=1:tDim % Build time axis for plot
t(ii)=ii*dt;
end
plot(t,pressureData(1,1,:))
This returns an error saying "Error using plot. Data cannot have more than two dimensions."
When I output the vector pressureData(1,1,:) in the command window, the output looks like this:
ans(:,:,1) =
-0.0038
ans(:,:,2) =
-0.0042
etc.
The data type for pressureData is double, so I'm not sure why I am getting this odd output. Any ideas? Thanks in advance!

댓글 수: 5

VBBV
VBBV 2023년 6월 20일
이동: VBBV 2023년 6월 20일
 Pdata = reshape(pressureData(1,1,:),1,[])
plot(t,Pdata)
VBBV
VBBV 2023년 6월 20일
이동: VBBV 2023년 6월 20일

Use reshape function to reduce the multidimensional matrix into vector since plot function uses vectors to graph data

Andrew
Andrew 2023년 6월 20일
이동: VBBV 2023년 6월 20일
@VBBV that does fix the plotting issue. How would I then reform the matrix back into its original 3D configuration?
Andrew
Andrew 2023년 6월 20일
The pressureData matrix is a 50x50x5000 matrix and I would like to keep it that way.
the cyclist
the cyclist 2023년 6월 20일
Neither of the solutions so far (as I write this) change the size of pressureData.

댓글을 달려면 로그인하십시오.

 채택된 답변

the cyclist
the cyclist 2023년 6월 20일
편집: the cyclist 2023년 6월 20일

0 개 추천

I understand your confusion. pressureData(1,1,:) is a vector in the sense that it only has elements along one dimension (the 3rd dimension), but it is still a three-dimensional MATLAB array because it is 1x1xtDim.
There are a couple possible solutions. Probably the easiest is to use the squeeze function to remove the dimensions that have length 1.
plot(t,squeeze(pressureData(1,1,:)))
You could also use the reshape or permute functions to manipulate the shape of the array.

댓글 수: 3

Andrew
Andrew 2023년 6월 20일
편집: Andrew 2023년 6월 20일
@the cyclist got it. Thank you!
the cyclist
the cyclist 2023년 6월 20일
편집: the cyclist 2023년 6월 20일
The size of pressureData doesn't really matter. The fact remains that
pressureData(1,1,:)
is a 1x1x5000 array, which is 3-dimensional. MATLAB will not treat that as a vector for plotting purposes, which is why you get the error. But
squeeze(pressureData(1,1,:))
is a 5000x1 vector, which will plot.
Andrew
Andrew 2023년 6월 20일
@the cyclist thank you!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

VBBV
VBBV 2023년 6월 20일
편집: VBBV 2023년 6월 20일

1 개 추천

Pdata = reshape(pressureData(1,1,:),1,[])
plot(t,Pdata)

댓글 수: 2

VBBV
VBBV 2023년 6월 20일
편집: VBBV 2023년 6월 20일

The original 3D remains in the pressureData variable itself visible in workspace. For plotting purposes a variable is assigned (i.e. Pdata in my answer) after reshaping the data. You can directly apply the reshape function on presssureData itself.

Andrew
Andrew 2023년 6월 20일
@VBBV thank you!

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

제품

릴리스

R2021a

질문:

2023년 6월 20일

댓글:

2023년 6월 20일

Community Treasure Hunt

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

Start Hunting!

Translated by