필터 지우기
필터 지우기

griddata size and length mismatch error while they are the same length

조회 수: 25 (최근 30일)
I have this matrix that I need to interpolate, so I'm using griddata for that.
Nonetheless it keep giving me the following error:
Error using griddata (line 110)
The lengths of X and Y must match the size of Z.
The thing is I've checked all it and my "X" (yys1) and "Y"(zzs1) should be the rigth lengths for "Z"(AAA). yys1 is a 57x1 double, zzs1 is a 99x1 double, while AAA is a 57x99 double. XIT and ZIT are a new grid to which the values need to be interpolated, these are 1001x2002 double.
See the code I typed in the workspace below and the error it gives, I would appreciate any and all help ;)
>> griddata(yys1,zzs1,AAA,XIT,ZIT,'natural');
Error using griddata (line 110)
The lengths of X and Y must match the size of Z.
>> griddata(yys1,zzs1',AAA,XIT,ZIT,'natural');
Error using griddata (line 110)
The lengths of X and Y must match the size of Z.
>> griddata(yys1',zzs1,AAA,XIT,ZIT,'natural');
Error using griddata (line 110)
The lengths of X and Y must match the size of Z.
>> griddata(yys1',zzs1',AAA,XIT,ZIT,'natural');
Error using griddata (line 110)
The lengths of X and Y must match the size of Z.
>> length(yys1)
ans =
57
>> length(zzs1)
ans =
99
>> size(AAA)
ans =
57 99
Thus in otherwords I have no clue what I'm doing wrong, could someone please point out what mistake I'm making or why matlab is throwing this error?

채택된 답변

Guillaume
Guillaume 2020년 2월 28일
편집: Guillaume 2020년 2월 28일
"I have no clue what I'm doing wrong"
You've been caught by what I call matlab's split personality. Most functions in matlab use a row/column coordinate system but a few others use a X/Y coordinate system where X corresponds to columns and Y correspond to rows. griddata falls into the latter case and thus:
  • The length of X must match the number of columns in Z
  • The length of Y must match the number of rows in Z
In other words, you've got the lengths of your X and Y swapped!
  댓글 수: 4
Guillaume
Guillaume 2020년 3월 1일
But my answer is good too? Right?
Not really. There was no problem with using vectors to start with. The issue is that it should have been yys1 that should have had 99 elements and zzs1 that should have been 57 element, or AAA should have been 99x57. Ultimately, you have mismatch between the y-z grid and the samples that can only be fixed by changing the grid or the samples.

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

추가 답변 (1개)

darova
darova 2020년 2월 28일
Make yys1,zzs1,AAA the same size
[Y,Z] = meshgrid(yys1,zzs1);
AIT = griddata(Y,Z,AAA,XIT,ZIT,'natural');

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품


릴리스

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by