1

これらのMatlabプロットグラフ(セグメントごと)とユーザー入力しきい値からの基準を満たした後、txtに書き込む前に新しい質問があり、Matlabはファイル全体をロードしますが、セグメントごとに表示およびプロットします

グラフをプロットし、ピーク ノード (> しきい値) を表示するように依頼されましたが、ノードをプロットすることしかできず、ここでスタックしています。

私にできること

この写真が示すものをプロットしようとしていますが、問題があります。

私が欲しいもの

これが私のコードです:

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つは

  1. 'O'グラフをプロットし、ユーザーが入力したしきい値よりも大きいノードにピーク ノードを表示します (ピークをプロットすることはできます'O'が、すべて 1 か所でスタックしています)。

  2. グラフがすべてに分割されている1000ため、x 軸の値を増やすことはできますか? 最初のプロットが0to1000から、2 番目のプロットが to になるよう10012000、データ全体の長さまで続きます。

  3. 開始したいセグメントからのユーザー入力を許可します。たとえば、値をキー入力してからプロット30014000、しきい値をキー入力した後、すべての出力を書き込むのではなく、テキスト ファイルに出力を書き込みます。最後にすべてのテキストファイル。(途中で何かエラーが発生した場合は、すべてをやり直す必要があるため、途中で何かが発生した場合にプロセス全体を繰り返すのを防ぎ、停止したところから開始することもできます)

4

1 に答える 1