【问题标题】:matlab serial data plotting in real timematlab串行数据实时绘图
【发布时间】:2013-05-23 16:05:22
【问题描述】:

我正在尝试在 matlab 上绘制实时序列值,但我无法通过任何演示成功。我的嵌入式系统已经在发送由串行终端检查的数据。当我试图让它们通过 matlab 时,会出现这样的错误:

Warning: Matching failure in format. 
???  In an assignment  A(I) = B, the number of
elements in B and
 I must be the same.

Error in ==> real_time_data_plot at 81 voltage(count) = fscanf(serialObject,'%f');  %#ok<SAGROW>

作为 matlab 中的一个序列,我正在使用这个文件:http://www.mathworks.com/matlabcentral/fileexchange/25519-collect-and-plot-data-from-an-instrument-in-real-time 在嵌入式方面,我只是发送固定值 100 以将错误情况概率降低为

sprintf(str,"%d\n",100);
USART_puts(USART2,str); 

该代码可以绘制几个样本,但稍后它会因上述错误通知而崩溃。你有什么建议吗? 谢谢

【问题讨论】:

    标签: matlab plot serial-port


    【解决方案1】:

    错误信息:

    在赋值 A(I) = B 中,B 和 I 中的元素个数必须是 一样的。

    暗示您的 fscanf(serialObject,'%f') 向量与 count 的长度不同。如果您可以在一个这样的实例中检查 fscanf(serialObject,'%f') 的输出,您会看到这种情况。假设 count 是一个整数,则 serialObject 很可能包含多个元素。

    一个简单的解决方法是:

    temp = fscanf(serialObject,'%f');voltage(count) = temp(1);
    

    如果最终值是您感兴趣的值,您可能希望使用 temp(end)。

    我不熟悉“USART_puts()”,但我的猜测是有一些积压形成,所以它会不时向 serialObject 发送多个更新。它也可能发送一个空向量,在这种情况下 size(temp) 将为 0 x 0,这也会导致错误消息。

    【讨论】:

      猜你喜欢
      • 2012-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多