0

次の例では、必要な結果をプロットするための最良の方法についてフィードバックをいただければ幸いです。

    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];

ここでは、異なる場所 (「loc1」、「loc2」) 間の (水温の) 相関値が「滞留時間」に従ってランク付けされていることを示す「表 3」があります (ここで、滞留時間は場所間の滞留時間の差です)。 )。私がやりたいことは、深さが増すにつれて、コヒーレンスのレベルが滞留時間に大きく影響されることを示すことです.

これは、深さごとに個別に行うことができます。

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

したがって、滞留時間が長くなるにつれて、相関関係が減少することが示されます。これは、より浅い深さ、つまり depths(1) に対して繰り返すことができます。

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

しかし、水深が深くなるにつれて、滞留時間の差が小さい場所ほどコヒーレンスのレベルが高いことを示す 1 つのプロットを作成したいと思います。

アドバイスをいただければ幸いです。

4

1 に答える 1

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);のが理にかなっています (そうしないと、深さ = 6.8 と深さ = 16.3 の間に大きなギャップが生じます)。[X Y] = meshgrid(1:numel(depths), residences);

次のようなものを削除shading interpして置き換えることもできますsurf(X, Y, correlations)

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

代わりに散布図を取得します。

于 2012-04-19T08:29:19.733 に答える