1

在满足这些Matlab 绘图图(逐段)和用户输入阈值的标准后,我有新的问题,然后再写入 txtMatlab 加载整个文件,但逐段显示和绘制

我的任务是绘制图表并显示峰值节点(那些>阈值的节点),但只能设法绘制节点并且它卡在这里:

我能做什么

我正在尝试绘制这张图片显示的内容,但我遇到了困难:

我想要的是

这是我的代码:

for e = 1:size(rows,1),
    %plot normal graph first, hold it before plotting nodes
    %so that it is combined
    figure,plot(rows(e,:)), hold on;

    %put the 'INPUT' statement outside the loop, or it will be evaluated 
    %multiple times (every time all the other conditions are true)
    threshold = input('Key in the threshold value to use: '); 
    % loop over this if statement to find peaks in this row
    for k = 2 : 999
        if (rows(e,k) > rows(e, k-1) && rows(e,k) > rows(e,k+1) && rows(e,k) > threshold)
            beat_count = beat_count + 1;
            peaks(beat_count)=rows(e,k);
            peak_x(beat_count) = k + 1000 * (e - 1);
            plot(rows(e,peak_x(beat_count)),'ro');
        end
    end
    %pop up text to plot new segment
    fprintf(1, 'press any key to continue!\n');

    % pause, on keypress go to next plot
    pause; 
end

% since peaks array keeps growing, we should print it out all at once:
fprintf(fid, 'the following peaks were found:\n');
for ii = 1:beat_count
  fprintf(fid, 'x = %d; peak = %f\n ', peak_x(ii), peaks(ii)); %open writer
end
fclose(fid); % close the file once you're done

我实际上有 3 个问题,但我想一个一个地解决它。所以第一个 1 将是

  1. 绘制图表并将峰值节点显示'O'为大于用户输入的阈值的节点(我设法绘制了峰值'O',但它都卡在了一个地方)

  2. 由于图形被分割成 each 1000,是否可以增加 x 轴上的值?就像第一个图是从01000,第二个是10012000,依此类推,直到数据的整个长度。

  3. 允许用户从他们想要开始的任何部分输入,例如,我可以输入一个值,这样我将绘制 from30014000每次输入阈值后,它会将输出写入文本文件,而不是将所有输出写入文本文件最后。(如果中途出现任何错误,您需要重做所有事情,这是为了防止在中途发生任何事情时重复整个过程,我也可以从我停止的地方开始)

4

1 回答 1

0

plot 函数有两个参数,x 值和 y 值。如果要从 0 到 1000 绘制,请设置 x 值:

x = ((e-1)*1000):(e*1000);
plot(x, rows(e,:));
...

为了在正确的 x 值处绘制 'o',请包含 x 参数:

plot(peak_x(beat_count), rows(e,peak_x(beat_count)),'ro');
...

如果您想在每次用户完成一个段时将数据打印到文件中,请在上述行之后打开文件以进行附加:

fid = fopen('OUTPUTFILE.txt', 'at');
fprintf(fid, 'x = %d; peak = %f\n', peak_x(beat_count), peaks(beat_count));
fclose(fid);
于 2013-07-12T00:36:07.803 回答