2012-04-19 2 views
0

В следующем примере я был бы признателен за некоторые отзывы о наилучшем методе построения требуемого результата.Совет для сравнения 3 переменных и построения графика

clear all 
Table1 = {0.990,0.987,0.972,0.832,0.776,20;0.988,0.986,0.961,0.946,0.906,... 
    30;0.963,0.956,0.850,0.897,0.908,70;0.970,0.968,0.922,0.835,0.674,... 
    90;0.957,0.950,0.908,0.925,0.955,100;0.966,0.963,0.948784273781552,0.892,... 
    0.812,120;0.977,0.973,0.932,0.779,0.648,450;0.985,0.985,0.915,... 
    0.832,0.792,480;0.979,0.969,0.939,0.814,0.642,550;0.983,0.980,0.916,... 
    0.719,0.520,570;}; 
locations = {'loc1','loc2','loc3','loc4','loc5'}; 
CombLocation = locations(nchoosek(1:length(locations),2)); 
Table2 = [CombLocation,Table1]; 
Headings = {'location1','location2','depth1','depth2','depth3','depth4',... 
    'depth5','residence time'}; 
Table3 = [Headings;Table2]; 
depths = [5.3,6.8,16.3,24,16.78]; 

Здесь мы имеем «Таблица3», который демонстрирует значения корреляции (температуры воды) между различными местами («LOC1», «LOC2») быть ранжированы в соответствии с «времени пребывания» (где время пребывания является разница в времени пребывания между местоположениями). То, что я хотел бы сделать, это показать, что по мере увеличения глубины на уровень когерентности в значительной степени влияет время пребывания.

Это может быть сделано для каждой глубины отдельно, например.

figure; 
plot(cell2mat(Table3(2:11,8)),cell2mat(Table3(2:11,7))); 

Таким образом, при увеличении времени пребывания корреляция уменьшается. Затем это можно повторить для меньшей глубины, то есть глубины (1), например.

figure; 
plot(cell2mat(Table3(2:11,8)),cell2mat(Table3(2:11,3))); 

Тем не менее, я хотел бы произвести один участок, который показал, что, как глубина воды увеличивается, в местах с более высоким уровнем когерентности были те, которые имели меньшую разницу во времени по месту жительства.

Любые советы будут оценены.

ответ

1

Как насчет поверхностного участка?

residences = cell2mat(Table3(2:end, end)); 
correlations = cell2mat(Table3(2:end, 3:end-1)); 
[X Y] = meshgrid(depths, residences); 
surf(X, Y, correlations) 
xlabel('Depth'); 
ylabel('Residence'); 
zlabel('Correlation'); 
shading interp; 

Это должно показать, что вы хотите, хотя ваш depths массив выглядит странно, так как он не отсортирован, что делает поверхность сократить под себя. Вы можете исправить это с помощью:

[depths i] = sort(depths); 
correlations = correlations(:, i); 

, но это делает поверхность выглядит странно (так как глубина 16.78, кажется, имеют более низкую корреляцию, чем глубина 24).

Замена [X Y] = meshgrid(depths, residences); на [X Y] = meshgrid(1:numel(depths), residences); может иметь смысл, если вы просто хотите показать, что происходит с увеличением глубины (в противном случае мы получим большой зазор между глубиной = 6,8 и глубиной = 16,3).

Вы также можете поэкспериментировать с удалением shading interp и заменяя surf(X, Y, correlations) с чем-то вроде

scatter3(X(:), Y(:), correlations(:), '.'); 

получить график рассеяния вместо этого.

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