1

一連のグラフをプロットする単純な gnuplot スクリプトがあります。実行すると、次のエラーが表示されます。

編集:提案に従って、コードの長さを大幅に短縮しました

    ;
    set xrange [pe_cnt:range_high];
    set xtics xticks;
    set xtics add (pe_cnt) 
                                                                                 ^
line 26: invalid expression 

これを解決するために多くの時間を費やしました。誰かがこれについて私を助けることができれば、本当に感謝しています。これは私のコードです:

range_high="`awk '{for(i=1;i<=NF;i++) if ($i=="--stop") print $(i+1)}' temp_info`"
xticks="`awk '{for(i=1;i<=NF;i++) if ($i=="--xticks") print $(i+1)}' temp_info`"
pe_cnt = "`awk '{for(i=1;i<=NF;i++) if ($i=="--pe_cnt") print $(i+1)}' temp_info`"
rd_cnt = "`awk '{for(i=1;i<=NF;i++) if ($i=="--rd_cnt") print $(i+1)}' temp_info`"


##################################################################################################
# Gnuplot script file for plotting Micron >= 1,16,32,64 WAFL single read last read


set autoscale    
set grid         
set title "Usable Flash Blocks vs PE cycles"

set xlabel "PE Cycles  "
set ylabel "% Usable Flash Blocks "
set y2label "% WAFL Blocks"

if (pe_cnt == range_high) {
    set xrange [pe_cnt-1:range_high]
    set xtics xticks
    set xtics add (pe_cnt-1) }
else { 
    set xrange [pe_cnt:range_high]
    set xtics xticks
    set xtics add (pe_cnt) }

set yrange [-10:140]
set y2range [-10:140]

set ytics 10
set y2tics 10

set term postscript color solid
set output 'Micron_srd.ps'

#set datafile separator ' '

set key top left
plot "Micron_all"      using (($1+1)*pe_cnt):(((256-$31)*100)/256)  smooth bezier  title '(>= 1 Bad WAFL)'      axis x1y1 with lines, \
     "Micron_all"      using (($1+1)*pe_cnt):(((256-$33)*100)/256)  smooth bezier  title '(>= 16 Bad WAFL)'      axis x1y1 with lines, \
     "Micron_all"      using (($1+1)*pe_cnt):(((256-$34)*100)/256)  smooth bezier  title '(>= 32 Bad WAFL)'      axis x1y1 with lines, \
     "Micron_all"      using (($1+1)*pe_cnt):(((256-$36)*100)/256)  smooth bezier  title '(>= 64 Bad WAFL)'      axis x1y1 with lines, \
     "Micron_all"      using (($1+1)*pe_cnt):(($14*400)/$5)  smooth bezier  title '(Uncorrectable WAFL)'      axis x1y2 with lines, \
     "Micron_all"      using (($1+1)*pe_cnt):(($70*100)/$5)  smooth bezier  title '(Correctable WAFL)'      axis x1y2 with lines
4

2 に答える 2

1

問題はpe_cnt数値ではない可能性がありますが、テストケースは自己完結型ではない (ファイルからこの値を読み取る) ため、特定するのは困難です。

以下は、同じコードで同じエラー メッセージを示す短い自己完結型の例です。

pe_cnt = "kittens"
set xtics add (pe_cnt)
于 2013-07-26T01:27:29.967 に答える
1

使用する

set xtics add (real(pe_cnt))

xtics add文字列が最初に検出されたときに別の構文も使用できるため、文字列を数値に自動的にキャストしないと思います。以下はキャストを行います。

set xtics add (pe_cnt pe_cnt)
于 2013-07-26T09:12:02.740 に答える