ページ 11

c言語の計算結果をgnuplotで出力してgifアニメを作成したい

Posted: 2020年12月05日(土) 13:00
by LukeTsu
お世話になります.

c言語で簡単な数値計算をしたデータを(pypeで)gnuplotを用いてgifアニメを作成したいと思っています.
下記サイト
https://qiita.com/k_nitadori/items/1ea13c2ae9b32ab66912
を参考にgifアニメ作成自体は成功はしたのですが,実行時に
GD Warning: one parameter to a memory allocation multiplication is negative or zero, failing operation gracefully
というエラーが(ループ回数分だけ)出ます.同じコートでも出ないときもあり,再現性がなく困っております.どなたかアドヴァイスいただけますと幸いです.

[*] 環境  
 [2.1] OS : Windows 10
 [2.2] cygwin gcc

[*] その他
 ・c言語はある程度理解しているが,pypeなどは初心者

例えば,下記のようなシンプルなコードでも同じエラーが出ることがあります:

コード:


#include <stdio.h>

#define GNUPLOT_PATH "C:/PROGRA~1/gnuplot/bin/gnuplot.exe"

int main(){

    FILE *fp;
    fp = popen(GNUPLOT_PATH, "w");

    double x,dx;
    int i;

    x=0.1;
    dx=0.01;

    fprintf(fp, "set terminal gif animate optimize delay 10 size 400,800\n");

    fprintf(fp, "set output 'test.gif'\n");

    fprintf(fp, "set xr [0:3]\n");
    fprintf(fp, "set yr [0:3]\n");

    for(i=1;i<=10;i++){
    fprintf(fp, "plot '-' pt 7 ps 2\n");
    fprintf(fp, "%f, 0\n", x);
    fprintf(fp, "e\n");
    x=x+dx;
    }

    pclose(fp);

    return 0;
}


Re: c言語の計算結果をgnuplotで出力してgifアニメを作成したい

Posted: 2020年12月05日(土) 14:19
by あたっしゅ
 ウチの環境ではエラーなしで .gif 出来ました。
 いろいろ検索したところ

> GD Warning:
> one parameter to a memory allocation multiplication
> is
> negative or zero, failing operation gracefully

 gnuplot が使っている GD が警告: メモリ管理関数の、いち引数が、マイナス、もしくはゼロで、落ちている。

 gnuplot をインストールし直した方がいいかもしれません。

Re: c言語の計算結果をgnuplotで出力してgifアニメを作成したい

Posted: 2020年12月05日(土) 14:35
by LukeTsu
あたっしゅ様

早速のご回答ありがとうございました.

> gnuplot をインストールし直した方がいいかもしれません。

ありがとうございます.一度試してみます.

ちなみに私の環境ではノートPCとデスクトップの両方で同じエラーが出ております.
特に,ループ回数を増やすと出るようです.
なお,参考にしたサイト:
https://qiita.com/k_nitadori/items/1ea13c2ae9b32ab66912
のコードでも,ループ回数を10から100に変えただけで同じエラーが出ることが確認できました.
また,xとyの範囲を 0:15 から0:150に変えてみたらエラーが消えました:
fprintf(gp, "set xr [0:150]\n");
fprintf(gp, "set yr [0:150]\n");

私のコードで範囲をいじってもエラー解消は見られませんでした.

アドヴァイスいただけますと幸いです.

Re: c言語の計算結果をgnuplotで出力してgifアニメを作成したい

Posted: 2020年12月05日(土) 15:23
by Meta3
メモリー不足ではありませんか?
OS
Windows10 は 8GB以上ですか

タスクマネージャーのパフォーマンスを見てください 
わたしは8GB中5GB使ってます

それとgnuplot--64ビット版
ですか
gnuplotデータが大きいサイズで制限を超えてるとか

Re: c言語の計算結果をgnuplotで出力してgifアニメを作成したい

Posted: 2020年12月05日(土) 15:50
by LukeTsu
Meta3さま

ご回答ありがとうございます.

デスクトップPCの方は
メモリー32 GB
CPUも Intel Core i7 1.80GHz
で64bitです.
空き容量も十分あります.
他にアプリを立ち上げたりもしないで実験しましたが,同じ症状が出ます..

gnuplotは64bit版です.
再インストールしてみましたが,やはりだめでした..