【问题标题】:Plotting vectors in matlab在 matlab 中绘制向量
【发布时间】:2011-07-03 11:29:49
【问题描述】:

我有这种情况,我无法以正确的方式解决它。问题是这样的: 我有 3 个向量:

  • Vector1 = [name1 name2 name3 name4 ... nameN](字符串名称)
  • Vector2 = [time1 time2 time3 time4](双)
  • Vector3 = [time1:name4 time2:name1 time3:name1 time4:name1] (double:String)

我想在matlab中做以下事情:

1- 将向量 1 放在 Y 轴上并命名 - 我可以用这段代码做到这一点:

   set(gca, 'YTick',1:N, 'YTickLabel',Names(:,1))

2-将向量2放在X轴上,模拟时间线

3- 一旦我们有了 X&Y 轴,我想使用 3 Vector 在图中绘制点

例如,3 Vector 包含连续时间戳,并且在每个时间戳中执行 nameN,所以我想使用 3 vector 作为输入在图中绘制一个点。

有什么建议吗?提前谢谢

【问题讨论】:

    标签: matlab graph vector timestamp


    【解决方案1】:

    需要将vector3中的名字转换为数字,然后调用plot命令即可。

    例如

    names = {'a','b','c','d'}; %# use a cell array (curly brackets) for strings
    time = [10 20 30 40 50];
    data = {10,'d';20,'b';40,'c'}
    
    %# convert data to numeric xData, yData
    xData = cell2mat(data(:,1));
    [dummy,yData] = ismember(data(:,2),names);
    
    %# plot
    plot(xData,yData,'.') %# plot dots
    set(gca,'YTick',1:length(names),'YTickLabel',names,'XTick',time)
    
    %# make sure the axes limits aren't too tight
    xlim([0,60]),ylim([0,5])
    

    【讨论】:

    • 这一行出现错误:[~,yData] = ismember(data(:,2),names);表达式或语句不正确——可能是不平衡的 (、{ 或 [.
    • @Martin Solac:我猜你正在使用旧版本的 Matlab,其中不支持 ~-notation。我修复了代码。
    【解决方案2】:

    一种方法是,

    1. 仅将值放入 Vector3 中
    2. 然后使用 plot(vector2, vector3)

    另外我建议将vector1重命名为“scale”,vector2重命名为“time”,vector3重命名为“values”。这应该有助于让您清楚地了解您正在使用什么等。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-23
      • 2014-04-13
      • 1970-01-01
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      相关资源
      最近更新 更多