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图形用户界面_Matlab - Fatal编程技术网

带暂停功能的Matlab图形用户界面

带暂停功能的Matlab图形用户界面,matlab,Matlab,我正在使用MatlabGUI指南。 gui是为了通过GPIB与keithley电流测量设备通信而构建的。 当对当前测量while循环使用切换按钮时,我在while循环中为每次迭代使用pause()函数,并在y数组读取结果上使用yttranspose function Measure_Callback(hObject, eventdata, handles) global GPIB1 global filename global timeStep dis

我正在使用MatlabGUI指南。 gui是为了通过GPIB与keithley电流测量设备通信而构建的。 当对当前测量while循环使用切换按钮时,我在while循环中为每次迭代使用pause()函数,并在y数组读取结果上使用yttranspose

    function Measure_Callback(hObject, eventdata, handles)

    global GPIB1
    global filename
    global timeStep

    disp('Measurement in progress \n stopwatch starts!');
    tic
    x=0;
    n=0;
    while get(hObject,'Value')
       fprintf(GPIB1, 'printnumber(smua.measure.i(smua.nvbuffer1))');
       fprintf(GPIB1, 'printbuffer(1,1,nvbuffer1)');
       A = fscanf(GPIB1);
       if length(A)<20
           x = x+1;
           n = n+1;
           t(n) = toc ;
           y(x) = str2double(A);
           plot(t,y,'-bo',...
                    'LineWidth',2,...
                   'MarkerEdgeColor','k',...
                    'MarkerFaceColor',[.49 1 .63],...
                    'MarkerSize',10);
           grid on
           hold on
       end 
       title('Current vs Time','FontSize', 15)
       xlabel('Time [s]','FontSize', 15)
       ylabel('Current [A]','FontSize', 15)
       a = timeStep;
       pause(a)
    end
    disp('Measurement terminated');
    disp('Elapsed time: ');
    elapsedtime = toc;
    elapsedtime_string = num2str(elapsedtime);
    disp(elapsedtime_string);
    ytrans = transpose(y);
    csvwrite(filename,ytrans);
    fprintf(GPIB1, 'smua.source.output = smua.OUTPUT_OFF');  
函数度量_回调(hObject、eventdata、handles)
全球GPIB1
全局文件名
全局时间步长
disp('正在进行测量\n秒表启动!');
抽搐
x=0;
n=0;
而get(hObject,'Value')
fprintf(GPIB1,“printnumber(smua.measure.i(smua.nvbuffer1)));
fprintf(GPIB1,'printbuffer(1,1,nvbuffer1');
A=fscanf(GPIB1);

如果长度(A)首先,如人们所说,发布错误和代码。你知道第一次运行循环时长度(A)是否小于20吗?因为如果没有,A就没有定义,你就不能转置不存在的东西。在循环之前初始化A,并查看错误是否仍然存在(或打印出长度(A),以确保循环在第一次运行时进入)


至于pause错误,请确保pause是int或double,而不是字符串。如果您从GUI字段获取全局时间步长,它可能是一个字符串,您需要先将其转换为双精度。

有关StackOverflow的问题通常应包含一个字符串。您发布的代码不完整,也不可验证。请回答您的问题,以确保您问题中的代码是最小的(仅复制所需的代码)、完整的(复制所需的所有代码)和可验证的(我们应该能够仅使用您问题中的代码复制问题,不能少,也不能多)。当询问错误和警告时,最好发布整个消息和堆栈跟踪,而不是转述。