Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB在while循环中绘制变化向量_Matlab - Fatal编程技术网

MATLAB在while循环中绘制变化向量

MATLAB在while循环中绘制变化向量,matlab,Matlab,我正在为一个电路工程项目将MATLAB与Arduino接口。我想轮询Arduino在给定传感器上感应到的电压,将该电压添加到一个向量,然后在同一个while循环中绘制所有电压。我已经记下了前两部分,但我似乎不知道如何随着时间的延长,一遍又一遍地绘制电压向量。有办法做到这一点吗 %{ Ventilation Rate Sensor v0.1 This program uses a thermistor connected to pin A0 and analyzes the differenc

我正在为一个电路工程项目将MATLAB与Arduino接口。我想轮询Arduino在给定传感器上感应到的电压,将该电压添加到一个向量,然后在同一个while循环中绘制所有电压。我已经记下了前两部分,但我似乎不知道如何随着时间的延长,一遍又一遍地绘制电压向量。有办法做到这一点吗

%{
Ventilation Rate Sensor v0.1

This program uses a thermistor connected to pin A0 and analyzes the 
difference in voltage drop in order to assess the user's ventilation rate. 
Designed for use with a voltage divider using a 2.2kOhm resistor and a
10kOhm (at 25C) thermistor in series. Note that this REQUIRES the Arduino
to have the code for MATLAB interface already installed. This is included
in the MATLAB Arduino software page at
<<http://www.mathworks.com/matlabcentral/fileexchange/
32374-matlab-support-package-for-arduino-aka-arduinoio-package>>
%}

clc
clear
close all

ard = arduino('COM3');
voltage = [];
timer = datenum(clock+[0,0,0,0,0,30]);


while datenum(clock) < timer
    sensorValue = ard.analogRead(0);
    voltage = [voltage (sensorValue * (5/1023))];
    hold on;
    t = [1:1:length(voltage)];
    plot(t,voltage)
end
%{
通风率传感器v0.1
该程序使用连接到引脚A0的热敏电阻,并分析
电压降差,以评估用户的通风率。
设计用于使用2.2欧姆电阻器和
10欧姆(25摄氏度)热敏电阻串联。注意,这需要Arduino
已经安装了MATLAB接口的代码。包括
在MATLAB Arduino软件页面的
%}
clc
清楚的
全部关闭
ard=arduino(“COM3”);
电压=[];
计时器=日期数(时钟+[0,0,0,0,30]);
而datenum(时钟)<计时器
传感器值=标准模拟读数(0);
电压=[电压(传感器值*(5/1023))];
等等
t=[1:1:长度(电压)];
绘图(t,电压)
结束
尝试在
绘图
行后添加。这将刷新事件队列并强制Matlab进行绘图

此外,您可以更新绘图的x和y数据,而不是每次都进行新绘图。也许这样可以节省一点运行时间:

h = plot(NaN,NaN); %// dummy plot (for now). Get a handle to it
while [...]
    [...]
    set(h,'xdata',t,'ydata',voltage); %// update plot's x and y data
end

@SciurusDoomus很高兴这有帮助。此外,请参阅编辑后的答案,其中包含另一个可能有用且有趣的想法。我真的不需要在这方面削减运行时间,因为绘图更像是一种测试机制,而不是我想要输出的实际数据。然而,我确信我将来会需要它,或者让这个程序在真正旧的系统上可用。谢谢