data2_1を模したサンプルデータから斜め線を表現させた例を書きました。
辺が階段のようになっている位置を検索し、その位置の近似直線を計算しました。
% data2_1を模したサンプルデータの作成
data2_1 = repmat(400, 10, 10);
col = repelem(3:10, 1:8);
rowcell = arrayfun(@(x) {1:x},1:8);
row = 11 - [rowcell{:}];
ind = sub2ind(size(data2_1), row, col);
data2_1(ind) = 200;
% 作成したサンプルデータの描画
imagesc(data2_1);
colorbar;
clim([100 450]);
BW = data2_1 > 300; % 300を基準に2値データにする。
% 縦方向に対して0,1、もしくは1,0となっているデータの境界を検索する。
rowDiff = diff(BW,1,1);
rowDiff = rowDiff ~= 0;
% 横方向に対して0,1、もしくは1,0となっているデータの境界を検索する。
colDiff = diff(BW,1,2);
colDiff = colDiff ~= 0;
% 検索した境界値から、境界の位置データに変換する。
[row, col] = find(rowDiff);
data = [row + 0.5, col];
[row, col] = find(colDiff);
data = [data; row, col + 0.5];
% 境界の位置データを描画
imagesc(data2_1);
colorbar;
clim([100 450]);
hold on;
scatter(data(:,1), data(:,2));
p = polyfit(data(:,1), data(:,2), 1); % 境界の位置データから近似直線を計算する。
% xが0と20の時の近似直線のy値を計算する。
x = [0,size(data2_1, 2)*2];
y = polyval(p, x);
% 近似直線の描画
figure;
imagesc(data2_1);
clim([100 450]);
colorbar;
hold on;
scatter(data(:,1), data(:,2));
plot(x,y);