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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
LukeTsu

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

#1

投稿記事 by LukeTsu » 4ヶ月前

お世話になります.

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;
}


アバター
あたっしゅ
記事: 439
登録日時: 10年前
住所: 東京23区
連絡を取る:

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

#2

投稿記事 by あたっしゅ » 4ヶ月前

 ウチの環境ではエラーなしで .gif 出来ました。
 いろいろ検索したところ

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

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

 gnuplot をインストールし直した方がいいかもしれません。
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.rosx.net/vtuber/index.html
レスがついていないものを優先して、レスすみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたっしゅ、[MrAtassyu]
http://ameblo.jp/mratassyu/
Pixiv: 666303
手提鞄屋魚有店(てさげかばんやうおありてん)

LukeTsu

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

#3

投稿記事 by LukeTsu » 4ヶ月前

あたっしゅ様

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

> 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");

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

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

Meta3

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

#4

投稿記事 by Meta3 » 4ヶ月前

メモリー不足ではありませんか?
OS
Windows10 は 8GB以上ですか

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

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

LukeTsu

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

#5

投稿記事 by LukeTsu » 4ヶ月前

Meta3さま

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

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

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

返信

“C言語何でも質問掲示板” へ戻る