我需要绘制两个21*120矩阵的前5行中包含的数据,但需要注意的是,一个矩阵中的数据应绘制为线,第二个矩阵的数据应在同一图上绘制为圆。
当我试图绘制矩阵时,我不知道如何正确地引用x和y,所以我通过创建一组向量来规避这个问题:
x = 1:120;
y1 = V(1, :);
y2 = V(2, :);
y3 = V(3, :);
y4 = V(4, :);
y5 = V(5, :);
k1 = K(1, :);
k2 = K(2, :);
k3 = K(3, :);
k4 = K(4, :);
k5 = K(5, :);
% Plot combined figure with forward- and backtracked data
figure
plot(x, y1, 'r', x, y2, 'g', x, y3, 'b', x, y4, 'y', x, y5, 'c',...
x, k1, 'ro', x, k2, 'go', x, k3,'bo', x, k4, 'yo', x, k5', 'co');
这是有效的,但一定有一种更简单的方法可以做到这一点,对吧?
一个简单的方法是将y1
、y2
等替换为仅取V
的切片的切片表示法。那么你就不需要那些不必要的变量了。
plot(x, V(1, :), 'r', x, V(2, :), 'g', ... % and so on
但更好的是,用颜色名称定义一个单元格数组,使用循环
colors = {'r', 'g', 'b', 'y', 'c'};
figure;
hold on;
for ii=1:5
plot(x, V(ii, :), 'color', colors{ii})
plot(x, K(ii, :), 'color', colors{ii}, 'marker', 'o')
end
如果要绘制更多的列,这种方法就不会那么乏味了。如果有更多的列,扩展也很容易!
nrows = size(V, 1);
colors = jet(nrows);
figure;
hold on;
for ii=1:nrows
plot(x, V(ii, :), 'color', colors(ii, :))
plot(x, K(ii, :), 'color', colors(ii, :), 'marker', 'o')
end
jet(n)
返回一个n x 3
数组,其中每一行都是射流颜色图中的一种颜色。