2013-12-01 3 views
0

Я хочу построить три вещи, альфа, темп и Ea. все они одинаковой длины, т. е. 81 это код, который я использую для этого.Как получить правильный участок поверхности с помощью Matlab?

clear all 
clc 
alp=[xlsread('3ddata.xlsx','Sheet1','A:A')] 
temp=[xlsread('3ddata.xlsx','Sheet1','B:B')]; 
Ea=[xlsread('3ddata.xlsx','Sheet1','C:C')]; 
surf([alp, temp,Ea]) 
axis tight 
xlabel 'Alpha' 
ylabel 'temp' 
zlabel 'Ea' 

, когда я получить участок ось х маркирован от 1 до 3, а на самом деле она составляет от 0,1 до 0,9 (данные) и аналогично у-оси показали, что от 1 до 80 на графике в то время как на самом деле это от 374 до 394 и то же самое с осью Z (Ea), которая показана на графике от -600 до 200, в то время как фактически она составляет от -619 до -591 .. (альфа от 0,1 до 0,9, темп от 374 до 394 и Еа от -619 до -591)

график прилагается здесь http://s27.postimg.org/eiv71pftf/myplot.jpg

+0

Какую переменную вы хотите построить как функцию других? Каковы точные размеры всех переменных? –

+0

Я хочу построить Ea как функцию temp и alp. для вашей информации любезно рассмотрите следующий рисунок. http://s24.postimg.org/4tsy8ahk5/sample.png –

+0

http://s24.postimg.org/4tsy8ahk5/sample.png Это пример того, что я хочу получить, и вот мои входные данные http: //pastebin.com/TySjCwuc –

ответ

0

Если вы хотите построить Ea (ось г) в зависимости от alp (ось х) и temp (ось у), попробуйте

surf(alp, temp, Ea) 

Для этого, чтобы работать, размеры должны быть что-то вроде: alp 81 х 1; temp 81 x 1; Ea 81 x 81 (давая значение для каждой комбинации alp и temp).

+0

Я сомневаюсь, что '[xlsread ('3ddata.xlsx', 'Sheet1', 'C: C')]' возвращает матрицу. – Daniel

+0

@ DanielR Ты прав. Если все они являются векторами, «plot3» - это, вероятно, путь. –

+0

@LuisMendo, когда я использовать прибой (ALP, TEMP, Ea) я получаю следующее сообщение об ошибке Ошибка при помощи прибой (строка 75) Z должен быть матрицей, а не скаляр или вектор. –

1

То, как вы используете surf, на самом деле не имеет смысла. С одним аргументом ввода вся матрица является картой высоты. Не имея ваших данных, я могу только догадываться: попробуйте plot3(alp, temp,Ea). Предоставляет ли это правильный выход, только отсутствует поверхность между ними?

Вы также можете попробовать:

tri = delaunay(alp,temp); 
trisurf(tri,alp,temp,Ea) 

Можете ли вы предоставить входные данные?

+0

Спасибо alot Входные данные является следующая ALP \t \t Temp Еа 0,1 \t 391,58 \t -618,689 0,2 \t 390,802 \t -514,175 0,3 \t 389,908 \t -440,807 0,4 \t 388,939 \t -389,19 0,5 \t 387,836 \t -351,683 0,6 \t 386.432 \t -329.766 0,7 \t 384.461 \t -334.504 0.8 \t 381,028 \t -382,355 0,9 \t 374,102 \t -594,966 Шоуде я послал вам первенствует файл или экран съемку. –

+0

http://s24.postimg.org/4tsy8ahk5/sample.png Это пример того, что я хочу получить, и вот мои входные данные http://pastebin.com/TySjCwuc –

+1

Ваши данные описывают строку в 3D-пространство, но гайка поверхность. – Daniel

Смежные вопросы