В принципе, я хочу построить трехмерное векторное поле с использованием конуса в Matlab. Моего сценарий выглядит следующим образом:Ошибка Matlab coneplot meshgrid MATLAB: griddedInterpolant: NdgridNotMeshgrid3DErrId/not plotting anythin
data=oommf2matlab('420x350x5-2_5-5.omf');
x=linspace(data.xmin,data.xmax,data.xnodes);
y=linspace(data.ymin,data.ymax,data.ynodes);
z=linspace(data.zmin,data.zmax,data.znodes);
[X,Y,Z]=meshgrid(y,x,z);
scale=4;
angle = data.datay ./ data.datax;
colors = angle;
figure;
coneplot(data.positionx,data.positiony,data.positionz,data.datax,data.datay,data.dataz,X,Y,Z,scale,colors);
oommf2matlab функция для преобразования моих данных в MATLAB и возвращает структура, как это:
xmin: 0
ymin: 0
zmin: 0
xmax: 4.2400e-07
ymax: 3.5400e-07
zmax: 1.2500e-08
xnodes: 212
ynodes: 177
znodes: 5
datax: [212x177x5 double]
datay: [212x177x5 double]
dataz: [212x177x5 double]
positionx: [212x177x5 double]
positiony: [212x177x5 double]
positionz: [212x177x5 double]
Запуск этого сценария дает мне ошибку
Ошибка при использовании interp3 (строка 146) Входная сетка не является допустимым MESHGRID.
Ошибка в конусе (строка 144) ui = interp3 (x, y, z, u, cx, cy, cz, метод);
Ошибка в omf2cone (строка 11) coneplot (data.positionx, data.positiony, data.positionz, data.datax, data.datay, data.dataz, X, Y, Z, масштаб, цвета);
Если проследить ошибку с помощью отладки в среде MATLAB: griddedInterpolant: NdgridNotMeshgrid3DErrId ошибка, которая выглядит следующим образом:
identifier:
'MATLAB:griddedInterpolant:NdgridNotMeshgrid3DErrId'
message:
Data is in MESHGRID format, NDGRID format is required.
Convert your data as follows:
P = [2 1 3];
X = permute(X, P);
Y = permute(Y, P);
Z = permute(Z, P);
V = permute(V, P);
F = griddedInterpolant(X,Y,Z,V)
cause: {0x1 cell}
stack: [3x1 struct]
Это странно для меня, потому что interp3 уже делает то, что ошибка говорит как исправить.
Кроме того, если я позволяю coneplot генерировать саму сетку с помощью:
coneplot(data.datax,data.datay,data.dataz,X,Y,Z,scale,colors);
Там нет ошибки, однако нет никакого сюжета создается вообще, только ось фигуры.
может быть ошибка в этой строке '[X, Y, Z] = meshgrid (y, x, z);' где вместо этого вы хотите '[X, Y, Z] = meshgrid (х, у, г); '? – bern