当グループではLHD計測データ収集系(LABCOMシステム)の運転と、同実験関係者・共同研究者の計測データ収集・データ利用・遠隔実験等を支援する以下のサービスを行っています。詳細は各項目をクリックしてください。
English
You are the th visitor since 4 July 2000
Contact : LABCOM
プライバシーポリシー
各種フォームから個人情報を入力・送信する前に必ず上記をご覧ください。

PV-WAVE

[231024] PV-WAVE Linux版で環境変数"WAVE_RT_PATH"の値が環境変数"WAVE_PATH"に追加されない

wvstartup.sh スクリプトのバグで、2017版以降のバージョンでこの現象が発生することを確認しております。
以下のパッチを適用すれば正しく動作いたしますので、パッチを適用してください。
修正パッチ : wvsetup.sh.patch

$ sudo patch -b wvsetup.sh wvsetup.sh.patch

目次戻る

[231016] AlmaLinux9.2にPV-WAVE 2023.2をインストールしたい

通常通り、インストーラでインストールを行う事ができます。

# ./pvwave_2023.2_rhel8_gcc8_x86-64.run

実行(wave -64)時にlibXm.so.4が見つからないとエラーが発生したら、以下のパッケージをインストールしてください。

# dnf install motif-2.3.4-27.el9.x86_64

目次戻る

[141014] PV-WAVE10.0/10.1の64ビット版でsizeof関数の戻り値がおかしい

PV-WAVE10.0/10.1の64ビット版でsizeof関数を使用するとLONG型やINT32型の戻り値が間違って返ってきます。
これは、PV-WAVE10.0での置き換えミスで、sizeof.cprが古いままとなっているのが原因です。

例)
WAVE> print,sizeof(1i)
SizeOf:: Data Type of Argument is UNrecognized. type = 13
0
WAVE> print,sizeof(1l)
4

対処としては、以下のいずれかの方法でsizeof.cprを新しいものに置き換えてください。

【対処1】

  1. PV-WAVEインストールディレクトリ\hdf5-1_88\libにあるsizeof.cprを削除する
    例)C:\RW\hdf5-1_88\lib\sizeof.cpr
  2. 新しいsizeof.cprを同じフォルダ(PV-WAVEインストールディレクトリ\hdf5-1_88\lib)に保存する
    新しいsizeof.cprはこちら

【対処2】

sizeof.proを明示的にコンパイルして新しいsizeof.cprを保存する

例)
WAVE> cd, 'C:\RW\hdf5-1_88\lib'
WAVE> .run sizeof
% Compiled module: SIZEOF.
WAVE> compile, 'sizeof'

目次戻る

[131018] PV-WAVE10.0でg++コンパイル時にコンパイルエラーになる

PV-WAVE10.0でg++コンパイル時にコンパイルエラーが発生します。PV-WAVEのlinkload を使ってローダブルモジュールを作成しようとすると、ヘッダファイル alib.h を読み込んだところで、alib.h の中で g++ の予約語(and, or等)がメンバ名として使われているのが原因だと思われるコンパイルエラーが出ます。

下記の通り2つの回避方法があります。ご利用のプログラムの内容によってお選びください。

【回避法1】ご利用のプログラム内で、 wavevars() をコールしていない場合
ご利用のプログラムから“#include wavevars.h”を外してコンパイルしてください。

【回避法2】 ご利用のプログラム内で、wavevars() をコールしている場合
PV-WAVE10.0に同梱されているヘッダーファイル"wavevars.h"の代わりにこちらのヘッダーファイルをご利用ください。(通常、”wavevars.h”はPV-WAVEインストールディレクトリ\wave\util\variablesにあります)

※ 尚、こちらは、PV-WAVEの次バージョンで修正される予定です。

目次戻る

[130522] Windows8/Windows Server2012でPV-WAVE10.0aを利用したい

PV-WAVE10.0aのインストーラでWindows8/Windows Server2012にインストールを行うと、DLLのロードエラーが出てインストールすることはできません。
コマンドライン版のインストーラを用意しましたので、こちらでインストールを行ってください。

コマンドライン版インストーラはこちら ⇒ pvw10.0_10.0a_cmdline_install.zip

zipファイルの中に以下の3つのインストールバッチがありますので、インストールするPCの環境にあったものをインストールしてください。

pvw10_32_win_install.bat: PV-WAVE 32-bit 10.0/10.0a用
pvw10_64_win_install.bat: PV-WAVE 64-bit 10.0用
pvw10a_64_win_install.bat: PV-WAVE 64-bit 10.0a用(最新バージョン)

インストール手順は次の通りです。

  1. pvwave10_cmdline_install.zipファイルを解凍
  2. 解凍されたファイルのpvw10_32_win_install.bat(32ビット版をインストールする場合)、 もしくはpvw10a_64_win_install.bat(64ビット版をインストールする場合)を開き、そのファイル中にある環境変数SOURCE_DIR(PV-WAVEのインストール元)とTARGET_DIR(インストール先)に、コメントを参考にし値を設定
    例)
    SOURCE_DIR=Z:\pvwave100a   (Zドライブに\\w3.lhd.nifs.ac.jp\pvwave をマウントした場合)
    TARGET_DIR=C:\RW   (インストールするディレクトリ(C:\RW)を事前に作成しておくこと)
    【注意】
    このバッチファイルでインストールを行うと、標準インストールされ、Extreme AdvantageやODBC Connectionがインストールされません。必要であれば、バッチファイルのPV-WAVE Advantage、PV-WAVE Extreme Advantage、Optional PV-WAVE Toolkitsのコメント(rem)を外してください。
    例)PV-WAVE Advantageをインストールする場合
    rem ##################################
    rem ### PV-WAVE Advantage
    rem ##################################
    rem ### PV-WAVE IMSL Mathematics
     unzip_windows -q -o %SOURCE_DIR%\allzips\mt.zip -d %TARGET_DIR%   (←コメントを外す)
     unzip_windows -q -o %SOURCE_DIR%\allzips\mtwin64.zip -d %TARGET_DIR%   (←コメントを外す)

    rem ### PV-WAVE IMSL Statistics
     unzip_windows -q -o %SOURCE_DIR%\allzips\st.zip -d %TARGET_DIR%   (←コメントを外す)
     unzip_windows -q -o %SOURCE_DIR%\allzips\stwin64.zip -d %TARGET_DIR%   (←コメントを外す)

    rem ### JWAVE
     unzip_windows -q -o %SOURCE_DIR%\allzips\jwave.zip -d %TARGET_DIR%   (←コメントを外す)
    rem ##################################
  3. コマンドプロンプトを起動し、cdコマンドでインストールバッチファイルがあるフォルダに移動
    例)
    C:\>cd C:\temp
  4. pvw10_32_win_install.bat、もしくはpvw10_win64_cmd_install.batを起動
     (インストーラの起動はダブルクリックではなく、必ずコマンドプロンプトから行って下さい)
    例)
    C:\temp>pvw10a_64_win_install

※PV-WAVEの起動は、(PV-WAVEのインストールされているディレクトリ)\wave\bin\bin.i386nt(32ビット版)、もしくはbin.win64(64ビット版)にあるwave.exeをダブルクリックしてください。

2013年5月22日現在、今後のバージョンでのWindows8のサポート予定がまだ立っておりません。
次期バージョンでのWindows8の対応に関してもまだ未定です。

目次戻る

[120501] PV-WAVE10.0のターミナルサーバ用、または変則的なディスク構成のマシンのライセンスを取得するには?

Windows版のPV-WAVE8.51以降のライセンスファイルは、ターミナルサーバでは利用できず、専用のライセンスファイルが必要になります。(Linux版は通常のライセンスでターミナルサーバとして利用できます)
ターミナルサーバ用のライセンスファイルを取得したい場合や、変則的なディスク構成のマシン等どのドライブのボリュームシリアル番号を取得していいかわからない場合は、次のツールでホスト情報を取得することによりライセンスが参照するボリュームシリアル番号を取得することができます。このボリュームシリアル番号でライセンスを申請してください。(PV-WAVE10.0より前のバージョンは、取得方法が違いますのでこちらをご覧ください)
なお、このライセンスは、米国のローグウェーブ ソフトウエアに申請するため、ライセンスを取得するのに数日かかります。ご了承ください。

次の手順で取得したファイルをライセンス発行申請と一緒にお送りください。

  1. PV-WAVEをインストールします。
  2. エクスプローラで、PV-WAVEメインフォルダ(デフォルト C:\RW)\license\bin\bin.i386nt(64ビット版の場合はbin.win64)に移動します。
  3. lmtools.exeをダブルクリックしツールを起動します。
  4. [System Settings] タブを開くとホスト名やボリュームシリアル番号等が表示されます。
    [Save HOSTID Info to a File] ボタンをクリックするとファイルを保存できますので、名前を付け(例:hostinfo.txt)、テキスト形式で適当な場所に保存してください。
  5. ここで表示されたボリュームシリアル番号でライセンス発行申請を行ってください。
    ターミナルサーバ用はイーサネットアドレスも必要ですので、保存したファイルをライセンス発行申請と一緒にお送りください。
目次戻る

[110708] ”iawin32.dll not found”や”This Application has Unexpectedly Quit”というエラーメッセージが出て、PV-WAVEがアンインストールできない

Windows7(64ビット)にPV-WAVE9.5/10.0 64ビット版をインストール後、アンインストール時に”iawin32.dll not found”や”This Application has Unexpectedly Quit”というエラーが発生し、アンインストールができない場合があります。エラーの原因は、使用されている環境にPV-WAVEのアンインストーラが使用するDLLが不足している為に発生したものだと思われます。(これは、PV-WAVE9.5/10.0のパッケージのバグで、改善要求を出しております)

次の方法でPV-WAVEのアンインストールを行うことができます。こちらを参考にアンインストールを行ってください。

※もしこの方法が上手くいかない場合は、手動でアンインストールする方法をお試しください。

目次戻る

[110707] 手動でPV-WAVEをアンインストールする

何らかの原因でPV-WAVEのアンインストールが行えない場合、手動でアンインストールを行うことができます。

目次戻る

[110330] FUNCTが1種類しか定義できないためCurveFit関数を1つのプログラムで2種類使うことができない

通常の使い方ですとCurveFit関数内で補間関数は1つしか指定できません。
回避策は幾つか考えられますが、比較的簡単な回避策は次の通りです。

【回避策】使用する補間関数を指定する変数を追加し、その変数によりCurveFit内のFUNCTで条件分岐させる。

始めに、CurveFit関数を呼ぶプログラム内で補間関数(補間法)を指定する変数(ここではiflag)を定義します。
次にCurvrFitのFUNCT内で、関数 f 及びその導関数dFdPを定義する場合IF文やCASE文を使って条件毎に f 、dFdPを記述する方法です。
FUNCTの3~13行目で2つの補間関数及び導関数を定義しています。
更にCurveFit_Exampleの11,12と15,16行で補間方法を指定しCurveFit関数を実行しています。

PRO FUNCT, x, p, f, dfdp
    Common cfit,iflag
    Case iflag Of
        0 : Begin
                f = ......
                dFdP = ......
            End
        1 : Begin
                f = ......
                dFdP = ......
            End
    EndCase
END

PRO curvefit_example
    Common cfit, iflag
    flag=0
   
    x = FINDGEN(601)/100
    y = 2*EXP(-(((x-3)/4)^2)/2)
    w = FLTARR(601) + 1
    p = POLY_FIT(x,y,2, yft)
    p = [p(0), p(1), p(2)]
   
    iflag = 0
    yfit0 = CURVEFIT(x,y,w,p)
        :
        :
    iflag = 1
    yfit1 = CURVEFIT(x,y,w,p)
        :
        :
END

ここで、FUNCT及びCurveFit_Exampleの2行目にあるCommon cfit, iflagは、Commonブロックと呼ばれモジュール(関数やプロシージャ)間でグローバル変数の受け渡しを行う為に使われます。
今回は、補間関数の種類を指定する変数iflagを両方のモジュールで使う為”cfit”という名称(任意)のコモンブロックを作成して使いました。

目次戻る

[110308] Fedora14でPV-WAVEがインストールできない

Fedora14にpvwave9.5をインストールしようとすると、エラーでインストールが止まってしまいます。
原因は恐らくOS(kernel)やライブラリのバージョンが違う為に発生した問題だと思われます。

PV-WAVEV9.5ではLinux版はRHEL5を正式サポートしておりますが、Fedra14はサポートプラットフォームに含まれていません。しかしLinuxは互換性の高いOSですので、回避策によりPV-WAVE9.5がFedra14が動作する可能性が十分に考えられます。サポートプラットフォームに含まれていないとご了承の上で、ご自身の責任において利用していただく分には何の問題もありませんので、必要であれば次の回避策を行ってください。

回避策としては、他の環境でインストールしたPV-WAVEのディレクトリーを丸ごとコピーして使うという方法です。この方法は、UNIX/LINUX環境で何らかの原因でインストーラが動作しない場合に使います。
LABCOMにPV-WAVE9.5をインストールしたディレクトリを丸ごとtarコマンドでまとめたファイルがあります。必要な方はCD-ROMを貸出いたしますので、(内線2452)までご連絡ください。

目次戻る

[100902] random関数でrandom(,/normal)としたときは正規分布で標準偏差が1のランダム変数が返されるのでしょうか?

PV-WAVE AdvantageのRandom関数にNormalキーワードを指定すると、標準偏差1の正規分布乱数が生成されます。
以下に簡単な使用例を示します。
 4行目のPlotコマンドで発生乱数の分布形状が、5行目のPrintコマンドで 発生乱数の標準偏差・最大値・最小値の確認ができます。

例)
WAVE>@Stat_startup
WAVE>n=100000
WAVE>r=Random(n,/Normal)
WAVE>Plot,Histogram(r,Binsize=0.1),Psym=10
WAVE>Print,Stdev(r),Max(r),Min(r)

目次戻る

[100709] コンパイル後のPV-WAVEプログラムをランタイムモードで実行するとエラーになる

コンパイル済みPV-WAVEプログラムを次のようにランタイムモード"-r"で実行するとエラーになります。

 例)wave -r ctrldisp1save

PV-WAVEのプログラムをランタイムモードで実行するには、ランタイムライセンスが必要です。
通常利用しているPV-WAVE開発ライセンスの場合、PV-WAVE起動時に指定できるファイルはPV-WAVEのオブジェクトコードではなくバッチファイルのみです。

PV-WAVEプログラム"ctrldisp1save"を実行するには、次の3通りの方法があります。

目次戻る

[100617] LINUX版PV-WAVE9.5/10.0を利用する場合のライブラリの追加インストールについて

LINUX版PV-WAVE9.5/10.0ではgcc4.4及びOpenMotif2.2のインストールが必要になります。
LINUX版PV-WAVE9.5/10.0を利用する場合、”gcc4.4”及び”openmotif2.2”及びのインストールを行ってください。

次のコマンドでライブラリの追加が可能です。
yum install gcc44* openmotif22

目次戻る

[100616] PV-WAVE9.5の新機能

PV-WAVE9.5の主な新機能は次の通りです。

その他、詳しくはこちらをご覧ください。
目次戻る

[100413] どのドライブのボリュームシリアルをライセンス認証に使用しますか?

通常はCドライブがブートドライブになっており、その場合はCドライブのボリュームシリアル番号でライセンス認証を行っておりますが、変則的なディスク構成のマシンの場合は、どのドライブのボリュームシリアル番号をライセンスに使用するかがわかりません。
その場合は、次の専用ツールを利用しライセンスが参照するボリュームシリアル番号を取得します。ここで取得したボリュームシリアル番号でライセンスの申請を行ってください。

目次戻る

[091104] HDF形式でのデータの保存と読み込みをしたい

HDFのインタフェースを使うには、PV-WAVEのプロンプトから次のコマンドを実行します。
WAVE> @hdf_startup

HDFのモジュールが正常にインストールされていれば、以下のメッセージが表示されます。
PV-WAVE:HDF Module Initialation

データの保存と読み込みの方法は、次のサンプルプロシージャを参考にしてください。

【サンプルプロシージャ】
目次戻る

[090319] readfでASCIIファイルを読もうとしているのですが、1行の文字数が8192を超えるため読むことができません。

Readfコマンドでは、ASCIIデータを読み込む際に1行のデータ(文字)数に制限があります。
通常のReadfコマンドやDc_Read***関数では読み込めませんので、以下のテキストファイルにある関数(ReadBig,Read2Big)をご利用ください。

Reading_large_ASCII_files_with_DC_READ_FREE.txt

【利用方法】
テキストファイル内にある2つの関数(ReadBig, Read2Big)のソースコードをReadbig.proまたはRead2big.proの名前で保存しご利用ください。
尚、ReadBigとRead2Bigの違いはデータ間の区切り文字(空白やカンマなど)が連続した場合、つまり区切り文字の間にデータがない(ヌル)の場合にそれを無視するかどうかです。(Read2Bigは無視します)

目次戻る

[090224] Windows VistaにPV-WAVE9.01をインストールしたが、エラーが出て使用できません。

Windows Vista32bit版にPV-WAVE9.01をインストールすると、次のエラーが出て使用できない場合があります。
Unable to load vniwave.dll

これはインストールが正常に行われてませんので、PV-WAVEをアンインストールした後、下記の回避策の方法で再度インスールを行ってください。

【原因】
Windows VISTAで新しく追加されたセキュリティー機能UAC(User Acount Control)に関連するもので、Windows VISTAではリモートディスクから実行されたプログラムに対し安全性の確認が取れない場合実行できないケースがあります。
たとえ実行時のIDがAdministratorであっても、例えばPV-WAVEの様にSetup.batから別のinstall.batが呼び出されているような場合2度目のバッチファイルの実行時に再度確認を行います。
これが個別のアプリであれば”このアプリケーションはシステムを変更する可能性があります、実行しますか?”といった確認ダイアログが出ますが、PV-WAVEのインストーラの場合はこの確認が省略され、確認が取れない為にインストールが上手くいかないようです。
*但しこの現象は必ず発生するという訳でもないようです。

【回避策】

  1. アンインストール後、次の方法で再インストールを行ってください。
    (アンインストールが正常に動作しない場合は、こちらを参考に手動でアンインストールを行ってください)
    1. \\w3\pub(または\\w3.LHD.nifs.ac.jp\pub)をマウントします。
    2. \\w3\pubがマウントされたら、\pvwave901\PV-WAVE_901_Winの中にある Setup.bat を右クリックし、[管理者として実行]をクリックします。ダブルクリックで実行しないでください
  2. 下記を参考にパフォーマンスの設定を行ってください。
    参考:[080520] PV-WAVE 9.0のWindows Vista対応状況

こちらの方法でも正しくインストールされない場合は、インストールCDを貸出いたしますので、LABCOMまでご連絡ください。

目次戻る

[090220] Fedora9でpvwave9.01をインストールしたが、エラーが出て使用できません。

Fedora9でPV-WAVE9.01をインストールすると、次のエラーが出て使用できません。
/usr/local/VNI/wave/bin/bin.linux/wave: error while loading shared libraries: libtermcap.so.2: cannot open shared object file: No such file or directory

FedoraCore9では、libtermcap.so.2が無くなりPV-WAVEが動作しません。
回避策として、FedraCoreの旧バージョン用のlibtermcap.so.2をインストールするとPV-WAVEが動作します。
次の2つをダウンロードしインストールしてください。

http://download.fedora.redhat.com/pub/fedora/linux/releases/8/Everything/i386/os/Packages/termcap-5.5-1.20060701.1.noarch.rpm
http://download.fedora.redhat.com/pub/fedora/linux/releases/8/Everything/i386/os/Packages/libtermcap-2.0.8-47.i386.rpm
目次戻る

[081120]  loadctでカラーテーブルを指定してもグレースケールで表示されてしまう

グラフ/可視化処理を行う場合、表現できる色数はアプリケーションを実行する端末に依存します。
loadctでカラーテーブルを指定してもグレースケールで表示されてしまうのは、ご使用の端末が24ビットカラー表示だと思われます。
24ビットカラー表示かどうかは、Infoコマンドで確認ができます。

WAVE> Info, /Device

Infoコマンドで”Visual Class”"Direct Color"の場合にこの現象が発生します。
これを回避するには、PV-WAVEを立ち上げた直後に次のコマンドを入力してください。

WAVE> Device, True=24

目次戻る

[080617]  ファイル名を取り出すには?

ファイル名を拡張子やファイル名本体に分解するコマンドで’Parsefilename’というコマンドがあります。
以下に使用例を記述します。

WAVE> dfile='neo81613_2.txt'
WAVE> Parsefilename,dfile, Ext=ex ,Fileroot=fr, Filename=fn
WAVE> Print,dfile
neo81613_2.txt
WAVE> Print,ex
txt
WAVE> Print,fr
neo81613_2
WAVE> Print,fn
neo81613_2.txt

目次戻る

[080612]  Plotコマンドで横軸目盛を表示しないようにするには?

PlotコマンドのTickNameキーワードで軸目盛を文字列に置き換える事ができます。
TickNameキーワードに与える文字列を空白(ブランク)にすることにより目盛を表示しないようにすることができます。

例)
!P.multi=[0,1,2]
n=10000
x = 5.0/(n-1)*Findgen(n)
y1 = Dist(100)
y2 = Sin(!Pi/Max(y1)*y1)
tn=5
Plot,x,y1,Back='FFFFFF'x,Color=0,Xstyle=1,Xticks=tn,Xtickname=Replicate(' ', tn+1)
Plot,x,y2,Back='FFFFFF'x,Color=0,Xstyle=1
!P.multi=0

実行結果

目次戻る

[080611] 「wave.exe - アプリケーションエラー アプリケーションを正しく初期化できませんでした (0x***) 」と出てPV-WAVEが起動しない

Windows 32ビット版または64ビット版で、PV-WAVE 9.0 またはPV-WAVE 9.5 のインストールが正常に終了しても、アプリケーションを起動しようとすると、次 のエラーが出て、アプリケーションが起動できない場合があります。
これは何らかの理由でインストーラが最終段階の処理で、アプリケーション本体(wave.exe)が必要とするランタイム・ライブラリのインストールを正しく行わなかったためと思われます。

wave.exeアプリケーションエラー

対処方法

アプリケーション本体(wave.exe)が必要とするランタイム・ライブラリは、インストール元のフォルダの utilwin フォルダ(*)以下に、本体とは独立したインストーラとして存在しています。OSの種類に合わせて、次のどちらか一方を手動で起動してインストールを行ってください。

(*) utilwin フォルダの場所
PV-WAVE9.0の場合:\\w3.LHD.nifs.ac.jp\pub\pvwave901\PV-WAVE_901_Win\utilwin
PV-WAVE9.5の場合:\\w3.lhd.nifs.ac.jp\pvwave\pvwave95\utilwin

完了すると、[コントロールパネル]>[プログラム]>[プログラムと機能] の一覧中に、「Microsoft Visual C++ 2005 Redistributable」のエントリーが現れ、PV-WAVEが実行可能になります。

目次戻る

[080520]  PV-WAVE 9.0のWindows Vista対応状況

【Windows Vista 32ビット版】

Windows Vista 32ビット版は、PV-WAVE 9.0で正式にサポートしておりますが、Windows Vista 32ビット版でPV-WAVEを使用する場合は、必ず次の設定を行って下さい。

『スタート』→『設定』→『コントロールパネル』→『システムとメンテナンス』→『システム』→『システムの詳細設定(A)』を選択し、表示された『システムのプロパティー』パネルから『パフォーマンス』→『設定(S)』→『パフォーマンスを優先にする』を選択。

この設定を行っても、
Unable to load vniwave.dll
というエラーメッセージが表示されPV-WAVEが動作しない場合があります。
その場合は、下記を参考に再インストールを行ってください。

参考:[090224] Windows VistaにPV-WAVE9.01をインストールしたが、エラーが出て使用できません。

【Windows Vista 64ビット版】

Windows Vista 64ビット版は、PV-WAVE 9.0のサポートプラットフォームには入っておりません(PV-WAVE次バージョンではサポート予定)。しかし、PV-WAVE 9.0 Windows 64ビット版をWindows Vista 64ビット版にインストールすると、Console/Home Window共に正常に動作することが確認されています。
但し、アンインストールは正常に動作しませんので、アンインストールしたい場合はこちらを参考に手動でアンインストールを行ってください。

また、Windows Vista 64ビット版にPV-WAVE 9.0 Windows 32 ビット版をインストールすると、インストール自体は完了しますが、Console/Home Windowを立ち上げても以下のエラーメッセージが表示されPV-WAVEは動作しません。
Error
Unable to load vniwave.dll.

以上のことから、Windows Vista 64ビット版マシンでは、PV-WAVE 9.0 Windows 64ビット版のみ動作可能ですが、正式なサポートの対象外となります。ご利用の際は、あらかじめご留意ください。

目次戻る

[080220]  PV-WAVE9.0 Consoleウインドウで日本語が表示できません

PV-WAVE9.0 Windows版のConsoleウインドウでは日本語の入力や表示はできません。
但し、Homeウインドウでは日本語の入出力ができますので、Homeウインドウをお使いください。

(以下2008/9/10追記)

【原因】

コンパイラ(MS Visual Studio 2005)のバグである事が分かっています。
現在までMicroSoftより提示されているバグフィックスではこの現象は回避できていません。

【回避方法】

色々なテストを行った所、".NET FrameWork2.0 SP1 日本語Language Pack"がインストールされているPCではPV-WAVE v9.0 Consoleウインドウ上でも日本語が正常に表示されることが確認されています。
但し、この方法はMicroSoftから提示された正式の回避方法ではありません。

.NET FrameWork2.0 SP1 日本語Language Packのインストールは下記URLから、また不要になった場合のアンインストールは”コントロールパネル-プログラムの追加と削除”から比較的簡単にできます。
但し、.NET FrameWork2.0 SP1のインストールはPV-WAVE以外のアプリケーションに影響を及ぼす場合もありますので、実際にインストールする場合はPCの管理者にご相談の上実施してください。

[.NET FrameWork2.0 SP1 日本語Language Packのダウンロードサイト]
http://www.microsoft.com/downloads/details.aspx?FamilyId=5F7F4632-C9C0-4E79-B269-C2AEE9D1962E&displaylang=ja

目次戻る

[080219] lmhostidの実行ができません

PV-WAVE9.0 Linux版をインストール後、ホストIDの取得コマンドとして小文字で ”lmhostid” を実行するとエラーが出ます。

UNIX/LINUXの場合ホストIDの取得コマンドは大文字の ”LMHOSTID” です。大文字で ”LMHOSTID” を実行してください。
もし、大文字の”LMHOSTID”を実行した時にエラーがでる場合は、ライセンス取得用のコマンドにパーミッションがない可能性があります。
以下のコマンドを実行した後、再度 ”LMHOSTID” を実行してください。

chmod 755 <maindir>/license/bin/arch

ここで、<maindir>はPV-WAVEをインストールしたディレクトリ名です。
尚、このコマンドは、”PV-WAVE9.0 Unix,Linux版インストールガイド” の9ページ ”2-1 2 ホストIDの取得” に記述してあります。
インストールガイドをご覧ください。

目次戻る

[080213]  fix関数で掛け算をすると誤差が生じる

PV-WAVEでは、2.12のような数値は単精度実数として、100は整数(Short)として取り扱われます。
また、2.11*100は(単精度実数)*(整数)=(単精度実数)となります。

ここで、2.12*100の演算結果を表示すると
WAVE> Print,2.12*100
            212.000
と表示されますが、FORMATキーワードを使って表示桁数を増やしてみると
WAVE> Print,2.12*100,Format='(E16.9)'
           2.119999847E+002
となります。

従って、FIX関数(実数を整数に変換する関数)に2.12*100の演算結果を渡すと211という値を返すことになります。
この結果はCやFORTRANなどでも同じになる思います。

この現象を回避する為には、以下の2つの方法があります。

  1. 倍精度演算を行う
    PV-WAVEでは数値の最後に”d”または”D"をつけると倍精度実数になります。
    上記演算を倍精度で行うと以下のようになります。
    WAVE> Print,2.12d*100,Format='(E16.9)'
               2.120000000E+002
    WAVE> Print,Fix(2.12d*100)
               212
  2. Nint関数を使う
    Nint関数は、Fix関数と同様に実数から整数への変換を行いますが、その際実数値に最も近い整数値に変換します。
    WAVE> Print,Nint(2.12*100)
                212
目次戻る

[071220]  空間座標における多数のデータ点があるとき、その境界を面で覆い可視化したい

vtkSurfGenプロシージャで、引き数として3次元の点群座標を与えるとその点を使って自動的に面を作成し表示してくれます。

例)
@waveadv
;-- 外形点データ作成 --
s = TRANSPOSE(random(100, /Sphere, Parameter=3))
info,s
;-- 立体形状表示 --
vtkSURFGEN, s, /NoAxes
;-- 外形点群追加表示(赤) --
vtkSCATTER, s, /NoAxes, Symb=1, Color='red', Scale=0.5, /NoRotate, /NoErase

上記例では、2行目の"s=Transpose(...)"で外形点のx,y,z座標を乱数を使って作っています。
この例を実行すると変数sに100個の点群座標が格納されます[3,100]

*上記例題のような”外形点群”ではなく、領域内部にも点が存在してるような”中身のつまった”データ群でも、vtkSurfGenは表示を行いますが外形面の形は崩れてしまう可能性があります。
 その場合は、できれば外形点だけを抽出してvtkSurfGenに渡してください。

目次戻る

[071115]  printコマンドで、行送りしないようにするには?

PV-WAVEのPrint/Printfコマンドでは、FORTRAN型の書式指定が可能です。
Print/PrintfコマンドのFormatキーワードの($)をご利用ください。

例)
以下の様に変数a,b,c,dを指定した後、5-8行目のPrint文を実行すると、それぞれの変数を異なる行に表示しますが、9-12行の様なコマンドをプログラムやバッチファイルから実行すると変数a,b,c,dを同じ行に出力します。

a="Start.... "
b=123456789L
c=999.999
d=" .....End"

Print,a
Print,b
Print,c
Print,d

Print,a,Format='(A,$)'
Print,b,Format='(I,$)'
Print,c,Format='(F,$)'
Print,d

こちらは、上記プログラムを格納したバッチファイルです。
test.pro

このバッチファイルは次の通り実行できます。
WAVE>@test

目次戻る

[070907]  割り算を使うと上手く動かない

PV-WAVEに限らず他のコンピュータ言語においても、プログラミングの際に注意する点として「分母が0の時の対応」と「整数同士の割り算」には問題があります。

例えば、
a=10
b=3
の時に, a/b=3 b/a=0 となります。
これを忘れてb/a=0.3 となる事を期待してプログラムを書いてしまう事がよくありますので注意してください。

PV-WAVEの場合、代入する値で変数の型が決まります。
例えば、
a=10
b=10.0
c=10.0d
とした場合、aは整数型、bは実数型、cは倍精度実数型になります。

また、配列の場合、
a1=[1 , 2, 3]
a2=[1.0, 2, 3]
a3=[1.0d, 2, 3]
とした場合、a1は整数型配列、a2は実数型配列、a3は倍精度実数型配列になります。

目次戻る

[070906]  Nlinlsq関数が使えません

まずは、PV-WAVE Advantage(IMSL Cライブラリ)の機能が使えるかを確認します。

PV-WAVE Advantage(IMSL Cライブラリ)の機能が使えるか否かの判断は@Math_startupを実行した際にエラーが発生するかどうかで分かります。
Advantageの機能が使える場合は次のようなメッセージが表示されます。

WAVE> @math_startup
   PV-WAVE IMSL Mathematics is initialized.

@math_Startup実行時にエラーが発生する場合は、以下をご確認ください。

  1. PV-WAVE Advantgaeがインストールされているか?
    PV-WAVEインストールフォルダー(通常C:\VNI)の直下にmath-*_*及びstat-*_*というフォルダーがあればOKです。
  2. PV-WAVE Advantageのライセンスがあるか?
    PV-WAVEインストールフォルダー(通常C:\VNI)の直下のlicenseフォルダーにあるlicense.lic(テキストファイル)の中に
    FEATURE WADVANTAGE VNI 8.500 1-jan-0 ......
    という記述があればOKです。LABCOMから発行されたライセンスであれば問題ありません。

【Nlinlsq関数の例題】

  1. Nlinlsq_test1.pro
    このプログラムの実行方法は以下の通りです。
    WAVE> .run Nlinlsq_test1
    WAVE> Nlinlsq_test1
  2. Nlinlsq_test2.pro
    こちらはNlinlsq_test1.proと同じ計算をおこない同じ結果を表示しますが、コンパイル/実行方法は次の通りです。
    WAVE> .run Nlinlsq_test2
    こちらのプログラムは".run"コマンドだけでプログラム内にあるFunction(関数) F をコンパイルした後、その下にあるコマンドを順番に実行してくれます。つまりコンパイルと実行を一度に行います。

    この辺の情報はVNIのHPにある資料を参考にしてください。
    URL:http://www.vnij.com/books/dod/pdf/wave/intro_pv_programming.pdf
目次戻る

[070517]  Inv関数が使えません

Inv関数が使えなくなる現象が起る原因として考えられるのは次の2点です。

  1. PV-WAVEのInv関数が壊れている
  2. Invと同名の関数又は変数を作成・使用している

まず、確認としてPV-WAVEを立ち上げた直後に次のコマンドを実行してみてください。

WAVE> @math_startup
WAVE> a=[[1,3,3],[1,3,4],[1,4,4]]
WAVE> ainv = Inv(a)
WAVE> print,a
WAVE> print,ainv
WAVE> print,a#ainv

上記コマンドを実行して、最終行(Print,a#ainv)の結果が単位行列になっていればPV-WAVEのInv関数は正常です。

上記の 2. を確認してください。
問題が発生しているプログラムの中で、"Inv"という名称の関数又は変数が使われていないか確認して下さい。

(尚、PV-WAVEには"Invert"という逆行列を求める関数もありますので、此方を使っていただいても結構です。使い方はInv関数とほぼ同じです。上記コマンドの3行目の'Inv'を'Invert'に代えてお試しください。)

上記コマンドで、逆行列ainvが計算できない場合、上記の 1. を確認してください。
Inv関数のオブジェクト及びソースコードは以下に格納されています。

"PV-WAVEインストールフォルダ"\math-5_5\lib

このフォルダー内にある、"Inv.cpr" がオブジェクト"Inv.pro"がソースコードです。
(ここで、"PV-WAVEインストールフォルダ"は通常"C:\VNI"です)
通常、Inv関数が呼ばれるとオブジェクトコード(Inv.cpr)が実行されます。
前述の確認コマンドでInv関数が正常に動作しない場合はこの'Inv.cpr'が壊れているか或いは別関数として上書きされている可能性があります。
以下の処理を試してください。

  1. Inv.cprをInv.cpr_orgに名前を変更する
  2. PV-WAVEを一度終了し、再度PV-WAVEを立ち上げた直後上記のコマンドを実行してみる。

Inv.cprを別名(Inv.cpr_org)に変更すると、Inv関数が呼ばれた時、ソースコード(Inv.pro)が自動コンパイル・実行されます。

以上を試し、原因を調べてください。

目次戻る

[070201] ターミナルサーバ用または変則的なディスク構成のマシンのライセンスを取得するには?

Windows版のPV-WAVE8.51以降のライセンスファイルは、ターミナルサーバでは利用できず、専用のライセンスファイルが必要になります。(Linux版は通常のライセンスでターミナルサーバとして利用できます)
ターミナルサーバ用のライセンスファイルを取得したい場合や、変則的なディスク構成のマシン等どのドライブのボリュームシリアル番号を取得していいかわからない場合は、次のツールでホスト情報を取得することによりライセンスが参照するボリュームシリアル番号を取得することができます。このボリュームシリアル番号でライセンスを申請します。
なお、このライセンスは、米国のローグウェーブ ソフトウエアに申請するため、ライセンスを取得するのに数日かかります。ご了承ください。

次の手順で取得したファイルをライセンス発行申請と一緒にお送りください。

  1. PV-WAVEをインストールする
  2. 「スタート」→「すべてのプログラム」→「アクセサリ」から「コマンドプロンプト」を起動します。
  3. cd コマンドでPV-WAVEメインフォルダ(デフォルト C:\VNI)\license\binに移動します。
    例)
    C:\>cd C:\VNI\license\bin
  4. 次のツールを実行します。
    • 32ビット版の場合
      get_hostid_intel <maindir>(PV-WAVEメインフォルダ)
      例)
      C:\VNI\license\bin>get_hostid_intel C:\VNI
    • 64ビット版の場合
      get_hostid_win64 <maindir>(PV-WAVEメインフォルダ)
      例)
      C:\VNI\license\bin>get_hostid_win64 C:\VNI
  5. PV-WAVEメインフォルダ(デフォルト C:\VNI)\license\bin に hostinfo.<ホスト名> というファイルができますので、メモ帳等で開き、ボリュームシリアル番号を確認します。
    ※ボリュームシリアル番号はこのファイル中に、次のように表示されます。
        Server host id: ["DISK_SERIAL_NUM=********"]
  6. 確認したボリュームシリアル番号でライセンス発行申請を行ってください。また、取得したファイルもライセンス発行申請と一緒にお送りください。

(例外)
稀に、この専用ツールを使っても、ボリュームシリアル番号が取得できない場合があります。
その場合は、Macアドレスの取得によってライセンスを作成することができますので、次の手順でMacアドレスを取得し、その結果をメモ帳などにコピー&ペーストしライセンス発行申請と一緒にお送りください。

  1. マシンを有線でネットワークに接続した状態にしてください。(無線LAN、未接続の状態は不可)
  2.  「スタート」→「すべてのプログラム」→「アクセサリ」から「コマンドプロンプト」を起動します。
  3. 次のコマンドを入力し、出力をメモ帳などにコピー&ペーストし、保存してください。
    ipconfig /all
  4. 取得したMacアドレスでライセンス発行申請を行ってください。また、Macアドレスを保存したファイルもライセンス発行申請と一緒にお送りください。
目次戻る

[070131リモートディスクトップでPV-WAVE8.51を使用するとエラーがでる

リモートディスクトップでPV-WAVE8.51を使用すると、次のようなエラーが表示され利用できません。

PV-WAVE8.51以降のライセンスファイルでは、リモートディスクトップでは利用できなくなっております。
リモートディスクトップで利用するには、専用のライセンスファイルが必要です。
こちらを参考にターミナルサーバ用のライセンスを取得してください。

目次戻る

[070122] CentOS4.4~5 (RHEL4.4~5)のマシンにPV-WAVE8.51 for Linuxがインストールできない

Linuxカーネルのバージョンの違いが原因だと思われます。(ローグウェーブ ソフトウエア ソフトウェア(株)談)
回避策ですが、PV-WAVEのLinux/UNIX版の場合、一旦他の環境にインストールしたPV-WAVEのインストールディレクトリ以下全てのファイルをコピーする事によりPV-WAVEをお使い頂けます。

具体的には、

  1. PV-WAVE v8.51 Linux版を一旦別の環境(マシン)にインストールする
  2. インストールしたPV-WAVEをtarコマンド等でまとめ(*)、実際にPV-WAVEを使用するマシンにコピーする
  3. コピーしたtarファイルを展開する。この際展開するディレクトリは、1.でインストールしたディレクトリと別名でも構わない
  4. VNI\waveディレクトリから bin/make_wvsetup を実行する

以上でPV-WAVE英語版のインストールが出来ます。日本語環境をインストールする場合は、"PV-WAVE8.5インストールガイド"に従って日本語の設定を行ってください。

(*)PV-WAVE v8.51 Linux版のtarファイルを作成しましたので、次のFTPサイトからダウンロードしてお使いください。

ftp://w3.LHD.nifs.ac.jp/pub/pvwave851/tarball/

VNI.tar.gz         :32ビットx86版(i386版) tar.gzファイル 約154MB
VNI-lnx64.tar.gz:64ビットx64版(x86_64版) tar.gzファイル 約144MB
license.lic           :テスト用デモライセンス(2007/2/22まで有効)
ReadMe_sjis.txt :説明資料(Windows環境でお読みください)

目次戻る

[070117] プロシージャのキーワードで、% Ambiguous keyword abbreviation というエラーが発生する

PV-WAVEではキーワードの省略表示が可能です。
例えば、Windowコマンドでウインドウの幅と高さを指定するキーワードXsize/Ysizeは通常、

WAVE> Window,0,Xsize=400,Ysize=500

と指定しますが、省略形を用いて以下の様にも指定できます。

WAVE> Window,0,Xs=400,Ys=500

各キーワードは、そのキーワードが特定できる所まで省略可能です。つまりWindowコマンドには、Xsで始まるキーワードがXstyle以外ない為'Xs=400'のような指定が可能になります。他にも、'Xsi=400','Xsiz=400'でもOKです。

例えば、、キーワードname1~name15を使った場合、次の例では'name1'キーワードがname1~name15のいずれを指定しているか区別がつかない為、エラーが発生します。

WAVE>make_info_line,pdata,vnum,vdata,name1=n1,name2=n2,name3=n3,name4=n4,name5=n5,name6=n6,name7=n7,name8=n8,name9=n9,name10=n10,name11=n11,name12=n12,name13=n
13,name14=n14,name15=n15
% Ambiguous keyword abbreviation: NAME1. →'キーワードの省略形があいまい'

以上ご理解の上、キーワード名の変更或いは変数の引渡し方法を変える等の対応をご検討ください。

目次戻る

[070109-1] SaveコマンドのLevelキーワードとは?

Saveコマンドとは

プロシジャ内でSaveコマンドを使って変数をファイルに保存する場合、通常そのプロシージャ内の変数のみが保存の対象となります。
例えば、サンプルプログラム(SaveTest.pro)は、次の様にSaveTestからSaveTest1が呼ばれ、更にSaveTest1からSaveTest2が呼ばれる構成になっています。
ここで、SaveTestプロシジャ内でSaveコマンド(31又は32行目)を実行すると、SaveTest内で作成した変数a,b,c,dをファイルに保存できます。ちなみに32行目の様に'/Variable'キーワードをつけると全ての変数が保存されます。また、31行目の様に変数を指定して保存する事も可能です。同様に、SaveTest1内でSaveコマンド(5行目)を実行すると変数e,fを、SaveTest2内でSaveコマンド(16行目)を実行すると変数g,hを保存することが出来ます。

SaveTest : 変数a,b,c,d
      ↓
SaveTest1:変数e,f
      ↓
SaveTest2:変数g,h

Levelキーワードとは

Levelキーワードを使う事により自分以外のプロシージャの変数を保存する事ができます。
例えば、SaveTest2からSaveTest内の変数を保存する場合、Level=1又はLevel=-2を指定します。(17,18行目)
ここで、Levelキーワードで指定する値は以下の様になります。

Case1:正の値の場合
保存する変数が存在するプロシジャがメインレベルから数えて何番目かを指定します。今回の例題ではSaveTest

WAVE>SaveTest

で実行されますのでメインから数えて一番目、SaveTestから呼ばれるSaveTest1は2番目となります。
SaveTest →1番目
SaveTest1→2番目

Case2:負の値の場合
保存する変数が存在するプロシジャが自分を基準にして何番前にあるかを指定します。
今回の例題では、SaveTest2はSaveTest1から呼び出される為、SaveTest1は-1(一つ前)、またSaveTest1はSaveTestから呼び出される為SaveTest2から見てSaveTestは-2(二つ前)になります。

従って、SaveTest2からSaveTest1内の変数を保存する場合はLevel=2又はLevel=-1になります。

サンプルプログラム(SaveTest.pro)

 1: Pro SaveTest1
 2:     e=11.0
 3:     f=Dindgen(10)
 4:
 5:     ; Save,/Variable ;-- SaveTest1内の変数をSave --
 6:     ; Save,/Variable, Level=1 ;-- SaveTest内の変数をSave --
 7:
 8:     SaveTest2
 9: End
10:
11:
12: Pro SaveTest2
13:     g='abcde'
14:     h=[10,11,12,13]
15:
16:     ; Save,/Variable ;-- SaveTest2内の変数をSave --
17:     ; Save,/Variable, Level=1 ;-- SaveTest内の変数をSave --
18:     ; Save,/Variable, Level=-2 ;-- SaveTest内の変数をSave --
19:     ; Save,/Variable, Level=2 ;-- SaveTest1内の変数をSave --
20:     ; Save,/Variable, Level=-1 ;-- SaveTest1内の変数をSave --
21: End
22:
23:
24:
25: Pro SaveTest
26:     a=1.0
27:     b=1L
28:     c='aa'
29:     d=Findgen(100)
30:
31:     ; Save, a, b, c, d ;-- 指定した変数をSave --
32:     Save, /Variable ;-- 全ての変数をSave --
33:
34:     SaveTest1
35: End

目次戻る

[070109-2] プロシージャ内からRestoreコマンドを実行するとエラーが発生する

プロシージャ内からRestoreコマンドを実行するとエラーが発生します。
これを回避する為のSave/Restoreのキーワードはありませんが、次の方法で回避できます。

[サンプルプログラム]
SaveTest.pro
RestoreTest.pro
variables.pro

  1. プロシージャに引数をつける

    サンプルプログラムSaveTestを実行した後、RestoreTestを実行するとエラーになりますが、RestoreTest.proの1行目をコメントにし2行目のコメントを外すとプログラムは正常に実行されます。

    ;Pro RestoreTest
    Pro RestoreTest,a,b,c,d ;-- Solution1 : Parameter set--
        ;a=(b=(c=(d=0))) ;-- Solution2 : Create variables--
        ;@variables ;-- Solution3 : Create variables with Command file--
       
        Restore
          :

    プロシージャ内部からRestoreコマンドを実行する場合には、Restoreする変数名が予め存在している必要があります。
    プロシージャの引数として変数名を指定しておく事で回避ができます。
    この場合、呼び出し側では必ずしも引数a,b,c,dを指定する必要はなく

    WAVE> RestoreTest,a,b,c,d

    WAVE> RestoreTest

    のどちらの方法でも実行可能です。
     
  2. 予め変数を作成しておく

    RestoreTest.proの1行目と3行目のコメントを外し2行目をコメントにして実行すると正常に起動します。

    Pro RestoreTest
    ;Pro RestoreTest,a,b,c,d ;-- Solution1 : Parameter set--
        a=(b=(c=(d=0))) ;-- Solution2 : Create variables--
        ; @variables ;-- Solution3 : Create variables with Command file--

        Restore
          :

    これは、前述1.同様、予めRestoreする変数名を定義する事によりエラーを回避できます。
    この際、定義する変数(a,b,c,d)はRestoreされる変数と同じタイプ/構造である必要はありません。
    例えばRestoreTestでは、変数dはd=0と整数型で定義されていますがRestoreコマンドを実行するとdは実数型配列に置き換わります。
     
  3. コマンドファイル組み込む方法

    前述の1.2.の方法は、Save/Restoreする変数の数が少ない場合は問題はありませんが変数の数が多くなると大変になってきます。
    特に複数のプロシージャでRestoreコマンドを実行する場合、すべてのプロシージャで同じ変更を行う必要があります。
    そのような場合、便利な方法がこの方法です。

    PV-WAVEでは、コマンドを記述したファイルをソースコードに組み込む方法があります。(C言語のインクルードファイルのような機能)

    RestoreTest.proの3行目をコメントにして4行目のコメントを外して実行してみてください。

    Pro RestoreTest
    ;Pro RestoreTest,a,b,c,d ;-- Solution1 : Parameter set--
        ;a=(b=(c=(d=0))) ;-- Solution2 : Create variables--
        @variables ;-- Solution3 : Create variables with Command file--
       
        Restore
          :

    4行目の@variablesでコマンドファイルvariables.proをプロシジャに組み込むことができます。
    この方法を使うと、Save/Restoreで指定する変数名や数が変更された時や複数のプロシージャで利用する際に便利です。

目次戻る


[061225] Movieコマンドを使用すると動作が遅い

Movieコマンドはコマンドとして古いく、制御が難しく環境によっては動作が安定しない為、現在ご使用はお薦めしておりません。

Movieを使用した例)
movie_test.pro

代わりとして、WgAnimateToolをご利用ください。
使い方はMovieコマンドとほぼ同じで、作成したプログラムからでも使用できますし、こちらの方が制御が簡単です。

WAVE> WgAnimateTool, image

WgAnimateToolを使用した例)
movie_test1.pro

WgAnimateTool(GUI)ではなく、Movieと同じように自動で動くものを使用したい場合は、Movie2プロシージャ(Movieプロシージャを修正したもの)を作成しましたので、こちらをご利用ください。

Movie2.pro

Movie2の実行方法はMovieと同じですが、早さの制御方法はマウスで行います。
    マウス左ボタン        →表示速度を遅く
    マウス右ボタン        →表示速度を早く
    Shitキー+マウス左ボタン →アニメーション終了
    *MicroSoft WindowsでMovie2を利用する場合は、Windowコマンドに必ず'Nometa'キーワードを付けてお使いください。

Movie2を使用した例)
movie_test2.pro

目次戻る

[061215-1] Oplotコマンドで後書きした場合に範囲外に表示しないようにするには?

Oplotコマンドで表示する範囲を限定する場合はClipキーワードを使います。

例)
WAVE> Plot,x0,y0
WAVE> Oplot,x1,y1,Clip=[xmin,ymin,xmax,ymax]

ここで、Clipキーワードに与えるxmin,ymin,xmax,ymaxはOplotで表示するグラフの範囲を示します。
具体的には、X軸はxminからxmaxまで、Y軸はyminからymaxまでの範囲のみ描画を行いそれ以外は表示しません。

目次戻る

[061215-2] ErrPlotコマンドで後書きした場合に範囲外に表示しないようにするには?

ErrPlotコマンドにはClipキーワードはありません。

ErrPlotのソースコード(ErrPlot.pro)を一部変更し、Clipキーワードを追加したもの(ErrPlot2.pro)を作成しました。

ErrPlot2.pro

こちらを、"PV-WAVEインストールフォルダー\wave\lib\std"に保存してご利用ください。

目次戻る

[061115] Printコマンドで表示する際に、スクロールを停止したい

PV-WAVEのコンソールウインドウ、ホームウインドウ共にスクロールを停止する機能はありませんが、 Printコマンドで表示する内容や表示の仕方によっては、 次のような対応策があります。

  1. 一度のPrintコマンドで大きなデータや文字列を表示する場合 (出力数が多く確認がしづらい場合)

    PrintをPrintfに変更し、ウインドウに表示している内容をテキストファイルに出力します。
    計算終了後、メモ帳等のエディターで内容の確認をします。
     
  2. Printコマンドを何度も繰り返す場合 (出力を確認しながら計算を行いたい場合)

    Hakコマンドを使ってプログラムを実行待ち状態にします。

    例えば、次の様なプログラムの場合、鳥瞰図を表示した後ウインドに'....Press Any Key....'というメッセージが表示されプログラムは実行待ち状態になります。キーボードのキー(どれでもOK)を押すとプログラムが再開されコンターグラフが表示されます。

    Print,'Create Surface Graph'
    Surface,data
    Hak,Mesg='....Press Any Key....'
    Print,'Create Countou Graph'
    Contour,data
目次戻る

[051124] CドライブのないマシンにPV-WAVE8.0インストールして起動したところ,”Wrong host for CL.”と表示され,正常に動作しません

通常、Cドライブがない場合,システムディスクのボリュームシリアル番号を使用してライセンスを登録しますが,何らかの原因で正常に動作しない場合は, Ethernetアドレスを使用した別の方法でライセンスを登録することが可能です.
まず,こちらの手順に従ってもう一度内容を確認してください.

これでも問題が解決しないようでしたら,ローグウェーブ ソフトウエア ジャパン(株)に直接連絡してください.

目次戻る

[051012] RHEL4互換OSにPV-WAVEをインストールすると起動画面が妙になる?

RHEL4.1互換OSにPV-WAVEをインストールし、初動ファイル wvsetup.sh を書き換えたところ、起動画面が下記の様に妙になりました。

$ wave
PV-WAVE Version 8.00 (linux Linux i386).
Copyright (C) 2003, Visual Numerics, Inc.
All rights reserved. Unauthorized reproduction prohibited.

PV-WAVE v8.00b UNIX/WINDOWS/AXPVMS December 2003

X
a linux


F1 -
F2 -
F3 -

この症状は,wvsetup.shファイル内の2つのパス設定 VNI_DIR WAVE_DIR

VNI_DIR=/usr/local/vni
WAVE_DIR=/usr/local/vni/wave
が正しくないと起こります.wvsetup.sh (sh) wvsetup (csh) の2つの初動ファイルは,同ディレクトリ内にある make_setup ユーティリティでインストール時に生成されますが,RHEL4のインストールtarボールを展開して,同ユーティリティで再生成する際に,

# cd /usr/local/vni/wave/bin
# ./make_setup

のように binディレクトリ中で実行してしまうと,上記のようにパスが正しく設定されなくなります.

# cd /usr/local/vni/wave
# ./bin/make_setup

このように一つ上の wave ディレクトリから  ./bin/make_setup とすることで,正しく wvsetup.sh 等が再生成されます.
こうして作成した wvsetup.sh によって CentOS4.1上のPV-WAVE 8.0b,Retrieve とも動作確認済です.

目次戻る

[050829] WAVELET関数ではn>15には出来ないか?PARSEWAVELET関数の場合は?

 WAVELET関数とPARSEWAVELET関数の改良版(wavelet.pro, parsewavelet.pro)があり、 これでウェーブレットの変換レベルを15以上に設定することが可能です。
目次戻る

[050623] set_plt='wmf'でグラフをメタファイルに出力するときに、xoffset,yoffsetは使えないようですが、グラフ の位置を変えるにはどうすればよいですか?

 WMFでは、/printオプションと併記して、xoffsetおよびyoffsetオプションを使ってください。
/printはWindowsマシンのディフォルトプリンタへ直接画像を出力するオプションです。

例:
set_plot,'WMF'
device,/print,xoffset=xx,yoffset=xx

プロットコマンド
device,/close_file → ディフォルトプリンタに出力されます。

目次戻る

[050610] 対数表示のプロット(plot_ioなど)をoplotのようなコマンドで重ね書きすることはできないのでしょうか?

対数グラフにOplotコマンドを使ってグラフを重ね描きする事ができます。
Oplotコマンドは既に表示されているグラフに別のグラフを重ね描きするコマンドで、既存のグラフの表示形式にあわせて追加描きします。
従って、既存グラフが対数グラフであればOplotで対数表示が可能です。
 例として、以下のコマンドを実行してみてください。
同じデータをWindow0では線形、Window1では対数表示します。
実行結果のイメージファイル(liner.jpg,log.jpg)をご覧ください。

data=[1.0, 10, 100, 1000, 10000]

Window,0,Title='線形-線形'
Plot, data, Title='Liner-Liner',Thick=2, Ticklen=0.5
Oplot,data*2, Color='FF00FF'x, Psym=-1
Oplot,data*5, Color='00FFFF'x, Psym=-2

Window,1,Title='線形-対数'
Plot_io, data, Title='Liner-Log',Thick=2, Ticklen=0.5
Oplot,data*2, Color='FF00FF'x, Psym=-1
Oplot,data*5, Color='00FFFF'x, Psym=-2
目次戻る

[041215] 24ビット画像をTVRDコマンドで読み込んだ後に、ビットマップ画像に落とすと画質が落ちてしまう

TVRDコマンドはオプションTrueを指定することによってTrueカラーで画像を取り出せます。
次の画像の取り出しと保存のサンプルプロシージャを参考にしてください。

Pro image_save
;-- イメージデータの読み込みと表示 --
ifile = !dir+'\..\image-1_0\data\teluride24.jpg'
img = Image_read(ifile)
Image_Display, img

;-- PV-WAVEウインドウに表示しているグラフ/画像を取得 --
data = Tvrd(0,0,img('width'),img('height'),True=3)

;-- BMPファイルとして保存 --
s = Image_Write('test.bmp',Image_Create(data),/Over)

End
目次戻る

[040419] PV-WAVEマニュアルを購入するには?

PV-WAVEマニュアルをローグウェーブ ソフトウエア ジャパン(株)より、直接購入することができます。
詳しくはこちらをご覧ください。

目次戻る

[040412] フルカラーディスプレー上での簡単なカラー設定方法

フルカラーディスプレー上でカラー設定を行う場合、通常次の例の様にRGBのカラーレベルを直接指定しなければなりません。

例)
Plot, Data, Color='ff00ff'x

しかし、WoColorConvert関数を使えばPV-WAVEの8bitカラーテーブルを使って比較的簡単にカラーの指定が出来ます。

下記のプログラム"Ctable_test.pro"を実行し、カラーテーブルの番号(0~15)を選ぶと画面左下にウインドウが開きます。
表示される折れ線グラフの色が、0.1秒おきに指定したカラーテーブルのカラー番号0から255までの色の順に変化します。

実行方法は、以下の通りです。
WAVE> .run Ctable_test

;****Ctable_Test.pro****

Pro Ctable_test
    Loadct
    Window,31,Xsize=300,Ysize=300,/Nometa,Title='WoColorConvert関数'
    num1=10
    x0=Findgen(num1)-num1/2
    x=Findgen(num1*10)/10-num1/2
    For i=0,255 Do Begin
        col=WoColorConvert(i, /IndexToColor)
        ttl = "Color NO="+Strtrim(i,2)+" RGB value="+Strtrim(col,2)
        y0 = x0*Sin(x0)/Max(x0)*Cos(i*!DPI/255)
        y = Spline(x0,y0,x)
        Plot, [0,1],Xrange=[-num1/2,num1/2],Yrange=[-1,1],Title=ttl,/Nodata
        Oplot,x,y,Color=col, Thick=2
        Wait,0.1
    Endfor
End

目次戻る

[040326-2] Plotの塗りつぶしシンボルの作成方法は?

Plotで使用するシンボルはデフォルトで約50個用意されていますが殆ど白抜き(中抜き)です。
但し、ユーザ独自のシンボル(含:塗りつぶし)を作成する為のコマンドUSERSYMが用意されています。USERSYMコマンドで作成したシンボルはPlotコマンドのPsymキーワードの8で呼び出せます。

例)
x = [0, -0.5, -0.5, 0.5, 0.5, 0]
y = [0.5, 0, -1, -1, 0, 0.5]
USERSYM, x, y, /Fill
Plot, Randomu(Seed,10), Psym=8, Symsize=4

目次戻る

[040326-1] Surfaceコマンドのレンジ指定方法は?

SurfaceコマンドでX/Yレンジを指定する場合は、Clipキーワードも同時にお使いください。
Clipキーワードにはグラフを表示するX,Yの最大値と最小値を指定します。

Clip=[x0,y0,x1,y1]

ここでX0,Y0は最小値,X1,Y1は最大値です。
以下、Xの囲を[1,5] Yは全範囲の場合の使用例を示します。

例)
x=findgen(10)
y=findgen(10)
z=intarr(10,10)
for i=0,9 do for j=0,9 do z(i,j)=i*j
surface,z,x,y,xrange=[1,5], Clip=[1,Min(y),5,Max(y)]

目次戻る

[040308] Contourで高さに応じた色をつけたい

フルカラーのディスプレーにカラーを表示する場合は、RGBの値を直接指定する必要があります。例えば赤は'0000FF'x,青は'FF0000'x、緑は'00FF00'xとなります。一方、PV-WAVEの8bitカラーテーブルを使って色を指定する場合にはWoColorConvert関数を使うと便利です。この関数は、カラーテーブルの番号をRGB値に置き換えてくれます。

8bitカラーテーブルを使って色を指定する場合
例)
LOADCT,2 & TVLCT,[0,255],[0,255],[0,255]
dim=200
x=findgen(dim)
y=findgen(dim)
z=fltarr(dim,dim)
for i=0,dim-1 do begin
    for j=0,dim-1 do z(i,j)=x(i)*x(i)+y(j)*y(j)
endfor
contour,z,levels=findgen(100)*(max(z)-min(z))/100.,$
    c_colors=WoColorConvert(findgen(100),/IndexToColor)

目次戻る

[040227] PV-WAVEのメーリングリストはありませんか?

PV-WAVEのメーリングリスト「PV-WAVE ユーザ友の会」は下記にあります。ご覧ください。

http://www.freeml.com/ctrl/html/MLInfoForm/pv-wave@freeml.com

目次戻る

[040219] 複数のy軸を表示する方法は?

複数のy軸を表示する方法は、PLOT等の ystyle キーワードと AXISプロシージャを組み合わせて使用します。

例)
WAVE> a =[10, 20, 30]
WAVE> b = [1, 9, 5]
WAVE> PLOT, a, Ystyle=4
WAVE> PLOT, b, Ystyle=4, /Noerase
WAVE> AXIS, 0.0, Yaxis = 0, Yrange=[0, max(a)]
WAVE> AXIS, 2.0, Yaxis = 1, Yrange=[0, max(b)]

目次戻る

[040218] 構造体のフィールドに配列変数を使っており、実行時に値を変えてデータとして読み取らせるとエラーが出る

名前付きの構造体(named structure)は、一旦定義した後に構造体の要素の形式を変更する事はできません。
名前なしの構造体(unnamed structure)ですと、その様な制限はありませんので、こちらをご使用下さい。

名前なし構造体の詳細は、PV-WAVE8.0 Programmer's guide 第6章 working with structures をご参照下さい。

目次戻る

[040212] 多次元配列で最小値のインデックスの要素を簡単に求めるコマンドはありますか

上記のようなコマンドはありませんが、以下の様に数行のコマンドで最小値のインデックスの要素を簡単に求める事ができます。

例えば、

6 2 0
1 3 5
0 4 1

という3X3の配列があるとします。

WAVE> array=INTARR(3,3)
WAVE> array(*, 0) = [6, 1, 0]
WAVE> array(*, 1) = [2, 3, 4]
WAVE> array(*, 2) = [0, 5, 1]
WAVE> PRINT, WHERE(array EQ MIN(array))
2 6

WHERE 関数は1次元の配列を返します。
この値を3X3のインデックスに戻すには
次の様に計算します。

WAVE> x = 2 MOD 3
WAVE> y = 2/3
WAVE> PRINT, array(x, y)
0

PV-WAVE内で処理する場合は、WHERE関数で返ってくる1次元配列をそのまま使用できます。

WAVE> PRINT, array(6)
0

目次戻る

[040209] 離散データを2次元の格子データに変換するには?

離散データを2次元の格子データに変換するには、関数 GRID_3D もしくは FAST_GRID3 を使用します。

例)
WAVE> points = RANDOMU(seed, 3, 100)
WAVE> result = FAST_GRID3(points, 20, 20)
WAVE> Shade_Surf, result

目次戻る

[040206] where関数で配列を指定するとうまく動作しないのは?

where関数で条件値を配列で指定するとうまく動作しません。
例えば、b=x(0)とした場合、

a=findgen(10)
select=where(a lt b)

と指定するとうまく動作しません。

bはスカラー値でなければなりません。
bが要素数1の配列の場合、b(0)のように指定します。
つまり、上式は、

select = where(a lt b(0))

となります。

さらに、bが配列ではなく、スカラーで帰ってくるようなプログラムの場合でも、PV-WAVEではb(0)と指定することができます。

例)
WAVE> a = 5
WAVE> info, a
A INT = 5
WAVE> print, a(0)
5

目次戻る

[040205] STRSUBST関数で [ を使うとエラーが出るのは?

STRSUBST、STRMATCH、STRSPLITなどの関数では、正規表現が使用されます。
従って、[ ] や $ 、.(ドット)などは特別なキャラクタとして認識されます。これを回避するために、これらの特別なキャラクタの前に\(バックスラッシュ)を2つ付けます。

例)
WAVE> line=' Distance [m]'
WAVE> line=strsubst(line,'\\[','b',/global)

PV-WAVEの文字列および正規表現に関する詳細は、PV-WAVE Programmer's guide, 第7章 Working with Text をご覧下さい。

目次戻る

[040202] debug時、プロシージャ/関数が停止した状態からプロシージャ/関数を修正し、再度コンパイル、再実行をしたい

プロシージャ/関数が停止した状態から、他のプロシージャ/関数をコンパイルする事はできませんが、割り込みやエラーで停止したプロシージャ/関数を.Conコマンドで再開することができます。

例えば、以下に示すテストプロシージャを実行すると3行目のSTOPコマンドでプログラムは停止します。

Pro test
a=Dist(100)
Plot,a
Stop
Wait,2
Surface,a
Wait,2
Shade_surf,a
End

停止したプロシージャを再開するには、PV-WAVEプロンプトから.Conコマンドを実行して下さい。
次の行から実行が再開されます。

WAVE> .Con

もし、関数/プロシージャがエラーで停止した場合はエラー行を飛ばして実行する必要があります。この場合は、.Skipコマンドを使います。
.Skipコマンドでエラー行をスキップした後、.Conコマンドで再開して下さい。

WAVE> .Skip
WAVE> .Con

更に、残りのプログラムを1ステップずつ実行するには、.Stepコマンドを使用します。
これらのコマンドに関する説明は、PV-WAVEのオンラインドキュメントのChapter7に説明があります。ご参照ください。

目次戻る

[040123] PV-WAVE for Linuxは今後どのディストリビューションをターゲットとしていくのでしょうか?

RedhatLinuxはこれまでのディストリビューションをやめ、Redhat Enterprise LinuxとFedora Projectに分岐いたしましたが、次期PV-WAVEの開発バージョンはおそらくRedhat9及びRedhat Enterprise Linux 3.0になるだろうとのことです。また、Fedra Projectに関しましては、ユーザの皆様や市場のニーズをみて検討するとのことです。

【最新情報】
PV-WAVE8.51の動作プラットホームは、Linuxの場合、Redhat Enterprise Linux 3.0のみ、FedoreCoreには未対応となっています。開発元のローグウェーブ ソフトウエア ジャパンも、FedoreCoreは安定リリースと捉えていないようですので、今後もRHELが標準対応Linuxという位置づけは変わらないと思われます。

そのため、LABCOMではRHEL互換のフリーディストリビューションであるCentOSを、PC UNIX(Linux)での標準動作環境と位置づけ、動作検証実施プラットホームとして利用すると共に、ユーザ各位に利用を推奨しております。

目次戻る

[040122] カメラから収集された画像データを表示する方法

カメラから収集された画像データを表示する方法は次のとおりです。

  1. retrieveコマンドでデータを取得します。
    例)
    WAVE> p=1
    WAVE> retrieve,'IRcamera-edge',48702,1,1,data,param=p
     
  2. パラメータを参照します。
    例)
    WAVE> printparam,p

            …(省略)…
    1    SampledFrame               300    Integer
            …(省略)…
    1    RegionOfInterestWidth     580    Integer
    1    RegionOfInterestHeight    480    Integer
            …(省略)…

    SampledFrame は収集したフレーム数です。
    RegionOfInterestWidthは、画像幅です。
    RegionOfInterestHeighは、画像高さです。
     
  3. (注意)11サイクル以降は三次元配列のデータが格納されるようになりましたので、この処理は必要ありません。4.にお進みください。11サイクルより前のデータは一次元配列で格納されますので、次の通りreformを行ってください。
     
    画像データが格納された一次元配列dataを三次元配列に変更します。
    例)
    WAVE> data = reform(data, 580, 480, 300)
     
  4. 画像の輝度をカラーに変更するには、次のコマンドを入力しておきます。
    WAVE> loadct,15
     
  5. 画像を表示します。
    • 静止画 tvscl
      表示するwindowを作成して、フレーム番号を指定して表示します。
      window,インデックス番号,XSize=画像幅,YSize=画像高さ
      tvscl,data(*,*,フレーム番号),/Order
      例)
      WAVE> window,0,XSize=580,YSize=480
      WAVE> tvscl,data(*,*,0),/Order
       
    • 動画
      次の2つのコマンドがあります。
      • movie
        表示するwindowを作成し、動画を表示します。
        window,インデックス番号,XSize=画像幅,YSize=画像高さ
        例)
        WAVE> window,0,XSize=580,YSize=480
        WAVE> movie,data
         
      • WgAnimateTool(アニメーション・ウィジェット)
        アニメーション・ウィジェットで動画を表示します。
        例)
        WAVE> WgAnimateTool,data,/Order

以上で次のような画像が表示されます。

tvscl、movieでカラー表示なしの場合(画像をクリックすると大きな画像が表示されます)

tvscl、movieでカラー表示した場合(画像をクリックすると大きな画像が表示されます)

WgAnimateToolでカラー表示した場合(画像をクリックすると大きな画像が表示されます)

目次戻る


[031211] PLOTでx軸、y軸の太さを変えたい

PLOTでx軸、y軸の太さを変えるにはシステム変数![XYZ].Thick を使用します。
通常は1.0に設定してあります。

例)x軸を通常の2倍にする場合。

WAVE> !X.Thick = 2.0
WAVE> PLOT, [1,2,3]

デフォルトの太さに戻すには

WAVE> !X.Thick = 1.0

と入力します。

目次戻る

[030926] DERIVコマンドの微係数がばらついてしまうのを避けるには

DERIVコマンドの微分はデータ点の両隣から出すようですが、データのばらつきにより微係数がばらついてしまうのを避けるため、データ点の前後数点を用いて平均的な微係数を求めるコマンドはあるでしょうか?

残念ながら、そのようなコマンドはありません。
DERIV関数のソースコード(deriv.pro) がVNI_DIR¥wave\lib\std にありますので、そちらを一部修正していただく事になります。
修正する際は、オリジナルのソースコードを別名で保存する、もしくは別名で保存したコードを修正する事をお勧めします。

目次戻る

[030925] エラーバー付グラフ表示で、colorやbackgroundを使いたい

PLOTERRには色を指定するキーワードがありません。
そこで、Color と Background キーワードを追加し、C_PLOTERRという名前のプロシージャを作成しました。

基本的な使用方法はPLOTERRと同じです。

C_PLOTERR, [x], y, err

C_PLOTERRはPLOTERRに数行追加しただけですので、C_PLOTERRのようにPLOTERRを変更すればPLOTERRでColorとBackgroundキーワードが使用できるようになります。
尚、PLOTERRプロシージャはVNI_DIR\wave\lib\stdにあります。

また、X方向にエラーバーを表示するには、C_ploterr.proを改良した、C_ploterr_kt.proをご利用ください。

*各サンプルプロシージャをダウンロードしてご使用になる場合は、拡張子.txtを削除してからご利用ください。

目次戻る

[030917-1] Linknloadで可変長の文字列を返す方法は?

Linknload関数はString型の値をCのReturn値として受け取る事ができます。その際、PV-WAVEがが受け取る文字列に長さの制限はありません。
次のサンプルプログラム(Linknloadを使ってC言語からPV-WAVEに文字列を返す)を参考にしてください。

*各サンプルプログラムをダウンロードしてご使用になる場合は、拡張子.txtを削除してからご利用ください。

関連:[030515-1] PV-WAVE String型データ長の限界は?
        [030515-2] LinknLoad関数のパラメータのサイズは変更できますか?また返値は文字列を指定できますか?

目次戻る

[030917-2] C言語側で新しい変数を作成しPV-WAVEに返す方法は?

PV-WAVEではCプログラムからPV-WAVEの変数にアクセスする為のC関数wavevarsを用意しています。但し、wavevars関数ではPV-WAVE上で既に定義されている変数にアクセスはできるのですが、wavevars関数を使ってPV-WAVE上に新しい変数を追加する事はできません。
そこで新しい変数を返すには、Linknloadを使います。
次のサンプルプログラム(Linknloadの返値を使って、Cで作成したFloat型配列変数をPV-WAVEに送る)を参考にしてください。

*各サンプルプログラムをダウンロードしてご使用になる場合は、拡張子.txtを削除してからご利用ください。

サンプルプログラム(sample3.pro、sample3.c)は次の様な構成となっています。

[sample3.pro]                   [sample3.c]
・Linknloadを使ってC関数を実行 ------->
                           ・Float型の配列作成
                           ・変数名とデータ値を文字列に格納
                     <-------・returnに文字列をセットする
・Linknloadの返値として文字列を受け取る
・文字列の余分な空白を取り除く
・データを分解する
・Execute関数を使いCで作成したFloat型配列を作成する
・Float型配列の確認

*このサンプルプログラムでC側で malloc によりメモリを確保しているのは?
Cプログラムで確保したメモリはPV-WAVEで開放する事はありませんので、Cプログラムでアローケートした領域はCプログラム内で明示的に開放してください。

*どの時点でメモリを解放すればいいのですか?
linknLoadの場合、Cの関数(DLL)内でallocateした変数領域で、return文でPV-WAVEに返す領域以外は明示的に開放してください。return文で配列データを返す場合、PV-WAVE側に返す前に変数領域を開放してしまうとPV-WAVEに値を渡す事はできません。従って、この領域は明示的に開放する事が出来ず、Cプログラム終了後もPV-WAVEが抱え込んでしまいます。
wavevars関数で使った変数領域は、free_wavevars関数で開放できます。C側で変更された変数の値はfree_wavevarsを実行した後でもPV-WAVE側に反映されます。

尚、Cプログラムが使用した領域をPV-WAVEが自動的に開放するという件に関しましては、本社開発チームに改善要求を提出しております。

目次戻る

[030807] プログラムを実行すると、"Program Data Area full"エラーが発生する.

これはPV-WAVE がプログラム実行時に使用するデータ領域(変数名などを記憶しておく領域)が不足したときに出ます。
このエラーへの対処としては、次の2つがあります。

  1. プロシージャや関数を分割してそれぞれを小さくする
    データ領域はそれぞれのブロック毎に設定されるので、プロシージャや関数を小さくすることで、一つのブロックに含まれる変数の個数を減らすことができ、このエラーを回避できます。
     
  2. ".SIZE" コマンドを使い、データ領域を拡大する
    デフォルトでは、データ領域のサイズは 8000 バイトに指定されており、500個の変数名を扱うことができます。
    データ領域を拡大するには、".SIZE" コマンドを使います。
    コマンドの使用方法は、
    .SIZE code_size data_size
    で、二つ目の引数にデータ領域のサイズを記述します。(.RUN などの実行コマンドと同じく、先頭にピリオドがつきます。)
    例として、
    WAVE> .SIZE 8000 24000
    とすると、データ領域のサイズを 24000 バイト、変数の個数にして 1500 個扱えるように拡大します。
    *code_size のほうは、プログラム実行時に足りなければ自動的に増えますので、特に変更する必要はありません。

1.の方法ではソースを変更する必要があるので、すぐに対処したい場合は2.を行ってください。

目次戻る

[030731] 8ビットのカラーテーブルを使用するには?

OSが24ビットに設定されている際、PV-WAVEはデフォルトで24ビットカラーを使用します。従って8ビットのカラーテーブルを使用するためにはPV-WAVEを擬似的に8ビットに変更する必要があります。
次のコマンドで擬似的に8ビットに変換します。
例)
DEVICE, pseudo=8

また、カラーデーブルを24ビットに戻す際は次のコマンドを実行してください。
例)
DEVICE, true=24

従って表示手順は以下のようになります。
例)
DEVICE, pseudo=8
LOADCT, 12
PLOT, [1,2,3], Color=20

また,WoColorConvertを使って24ビットの環境で8ビットのカラーテーブルを使用することも可能です。
例)
LOADCT, 12
PLOT, [1,2,3], Color=WoColorConvert(30) ;
カラーテーブルの30番目を指定
WoColorConvertの引数に8ビットのカラー番号を指定するとカラーテーブルに沿ってRGBの値に変換します。逆に引数にRGBの値を与えると8ビットのカラー番号に変換します。

尚、24ビットの設定でのカラーの指定は16進数でBGRと指定します。
例)
PLOT, [1,2,3], Color='FF0000'x ;青が表示される

目次戻る

[030516] -Dtry=__tryオプションフラッグでコンパイルエラーになるのですが、このオプションは必須ですか?

-Dtry=__tryオプションフラッグは製品開発の時に使用したものであり必須ではありません。従って、このオプションフラッグを外してコンパイルしても特に問題ありません。

目次戻る

[030515-1] PV-WAVE String型データ長の限界は?

PV-WAVE7.5ではString型データの文字数の限界は特に設けておりません。PV-WAVEのマニュアルには文字数の上限値として32767と表記してありますがString型変数としての文字数制限はありません。但し、String型変数を扱う関数/コマンドには以下の様な制限があります。 ご注意ください。

目次戻る

[030515-2] LinknLoad関数のパラメータのサイズは変更できますか?また返値は文字列を指定できますか?

  1. パラメータ変数
    LinknLoad関数に指定するパラメータのサイズは変更不可です。これはPV-WAVEのString型変数の文字長についても同様です。従って、LinknLoadの引数として渡された変数を、Cプログラム内でリアロケート(realloc)するとエラーが発生します。ただし、文字を再代入するだけであれば問題ありません。
    また、LinknLoad関数でString変数をNULLにした時エラーが発生します。こちらについては、PV-WAVE側で文字変数を定義する場合にNULL以外の文字列をお使い頂く事でこの問題は回避できます。

        STR='' ; -- NULL文字のみ、文字長0、使用不可 --
        STR=' ' ; -- 空白文字、文字長1、使用可 --

        本件に関しまして、改善要求を出しました。
        ご不便をお掛けしますが、ご理解の程お願いいたします。
     

  2. 返値
    LinknLoadの返値として文字列を指定する事は可能です。この場合、C側で文字長を定義してPV-WAVE側に返せるので、便利だと思います。またこの際、PV-WAVE側で文字数の制限はありません。LinknLoadで文字列を返値とする場合、"S_Value"キーワードを使います。
    次のサンプルプログラムを参考にして下さい。
     

    *各サンプルプログラムをダウンロードしてご使用になる場合は、拡張子.txtを削除してからご利用ください。

    尚、LinknLoadには構造体を返値とする機能はありません。

目次戻る

[030515-3] CのプログラムからPV-WAVE上に存在する変数を参照する事ができますか?

PV-WAVEではwavevarsというCの関数を用意しており、CのプログラムからPV-WAVE上に存在する変数を参照する事ができます。LinknLoadとwavevarsを併用する事により、より効率的なアプリケーションを作成できます。次のサンプルプログラム内でwavevars関数を使っております。参考にして下さい。

*各サンプルプログラムをダウンロードしてご使用になる場合は、拡張子.txtを削除してからご利用ください。

また、Wavevars関数の使用法に付きましては次のプログラムもご参照ください。

%WAVE_DIR%\demo\interapp\win32\linknload\c_from_wave.c
%WAVE_DIR%\demo\interapp\win32\linknload\wave_to_c_main.pro

wavevars関数を使った場合も、Cプログラム内でデータサイズを変更する事はできません。

目次戻る

[030515-4] LinknLoadから再度PV-WAVEを呼ぶことができますか?

PV-WAVEではcwavecというCの関数を用意しており、CのプログラムからPV-WAVEのコマンドやプロシージャを実行する事ができます。
しかし、このcwavec関数を利用して、LinknLoadでCallされるCプログラム内から、PV-WAVEのコマンドを実行しすると、メモリーエラーが発生してしまいます。
LinknLoadとcwavecは併用できません。

目次戻る

[030428] SPLINE関数においてTENSIONは具体的にはどのような値を動かしているのですか?

SPLINE関数は、以下のようなの理論式を基にしています。

y= C1*exp(k*x) + C2*exp(-k*x) + C3*x + C4

ここで、C1とC2は実際のxの関数です。したがって、引数kが0の場合、SPLINEは3次スプライン補間です。kの値が大きくなるほど、SPLINEは徐々に区分的線形補間に近づいていきます。

PV-WAVEのSPLINE関数は、PV-WAVEインストールディレクトリ/wave/lib/std/spline.proにソースコードが提供されていますので,プログラムの詳細はそちらをご覧下さい。

目次戻る

[030422] EmacsエディタにPV-WAVEの構文を認識させるには?

PV-WAVEのインストールディレクトリの下の、emacsフォルダに存在するファイルは、EmacsエディタにPV-WAVEの構文を認識させるためのファイルです。PV-WAVEの構文を認識することで、Emacsエディタ上でPV-WAVEのキーワードが違う色で表示されたりします。

インストール方法などの詳細は、emacs ディレクトリの下のwave-mode.txt ファイルをご覧下さい。
インストール方法の最後に以下の一文を追加してください。以下の文中の"whenever you want to put your local emacs stuff"には、emacs の設定ファイルのディレクトリを指定してください。

;; Add local stuff to load path (setq load-path (append (list nil (expand-file-name "whenever you want to put your local emacs stuff")) load-path))

※なお、PV-WAVE言語用のEmacs WAVEモードは、サポートの対象外となっておりますので、不具合などには対応できない場合があります。ご了承下さい。

目次戻る

[021213] PV-WAVEをインストールするとエラーで終了する、または途中で中断してしまう.

インストールがエラーで終了したり、途中で「Failed to resolve JVM」というメッセージが出力され中断してしまうのは、環境変数のTMP及びTEMPにあると考えられます。

以下の手順で環境変数TMP(TEMP)を変更し、再度インストールを行ってください。

  1. Cドライブの直下にtempフォルダが無い場合、tempフォルダ(C:\Temp)を作成します。
  2. マイコンピュータを右クリックし、プロパティを選択します。
  3. ”詳細設定”タブをクリックし、”環境変数”ボタンをクリックします。
  4. ユーザー環境変数のTEMP及びTMPを選択し、編集ボタンをクリックします。
  5. ここで、”%USERPROFILE%\Local Settings\Temp”等と入力されているところを、”C:\Temp”のように変更します。(必要であればインストール後に元に戻してください)
  6. 再度インストールを行います。
目次戻る

[021212] PostScriptファイルを、横長に設置された用紙に回転しないでそのまま表示させるには?

横長に表示するためにLANDSCAPEキーワードを指定すると、縦長の紙に 90度回転させたグラフが表示されてしまいます。

set_plot,'ps'
device,/landscape

横長に設置された用紙に回転しないでそのまま表示させるには、PV-WAVEのソフトウェアフォントではなく、ハードウェアフォントを使用することで横向きに表示することができます。

【例】
set_plot,'ps'
!p.font=0
device,filename='wave_test.ps',/landscape,xsize=15, ysize=10
plot,dist(10)
device,/close

目次戻る

[021122] ODBC経由で計測タイミングシステム(DTS)の動作パラメータを取得したい.

計測タイミングシステム(DTS)の動作パラメータを取得するには、ODBC経由のプロシージャを作成します。ODBC経由のプロシージャを作成するには、次のものが必要です。
なお、サンプルプロシージャも公開しております。

§1.必要なもの

§2.サンプルプロシージャ

次のサンプルプロシージャを使用される場合は下記の使用手順に従ってください。

*各サンプルプロシージャをダウンロードしてご使用になる場合は、拡張子.txtを削除してからご利用ください。

■サンプルプロシージャ使用手順

  1. プロシージャを適当なディレクトリに保存してください
    C:\work
  2. PV-WAVE Consoleを起動してください
  3. プロシージャを保存したディレクトリに移動してください
    WAVE> cd,'C:\work'
  4. 初期設定を行います(これを行わないと、コンパイル時にエラーが出力されます)
    WAVE> @odbc_startup
    成功すると次のメッセージが出力されます
    % ODBC_INITIALIZE: PV-WAVE:ODBC Interface is initialized
  5. プロシージャをコンパイルしてください
    WAVE> .run dtsdelay(またはdtsfrequency)
    コンパイルが成功すると次のメッセージが出力されます
    % Compiled module: DTSDELAY.(DTSFREQUENCY)

■サンプルプロシージャ実行方法

dtsdelay(dtsfrequency),IPAddress,shotNumber,subShotNumber,channelNumber,dataArray

IPAddress : VMEのIPアドレス (例)133.75.175.100
shotNumber : ショット番号
subShotNumber : サブショット番号
channelNumber : チャネル番号
dataArray : データ構造体(取得したデータが格納されます)

■データ構造体の内容

目次戻る

[020314] 漢字アカウントでインストールできないのは?

この件に関しては、現在開発元に問い合わせ中です。
英語名の管理者IDからインストールを行なってください。

目次戻る

[020307] "Checkout of CL failed."エラーが発生する.

エラーの発生するマシンのシステム日付が、こちらが発行したライセンスの日付より以前の日付けがセットされている場合、次のようなエラーが発生します。

Checkout of CL failed.
client : Feature start date is in the future
Feature: CL
License path: C:\VNI\license\license.dat;C:\VNI\license\pack.dat
FLEXlm error: -31,34
For further information, refer to the FLEXlm End User Manual,
available at "www.globetrotter.com".

システム日付を確認し、正確な日付をセットしてください。

目次戻る

[020218] FINDFILE 関数を使用するとメモリ使用量が増えていくのは?

FINDFILE 関数の不具合である事が確認されております。この件につきまして開発元に改善の要求が出されていますが、改善の時期などは未定です。

【回避策】

旧バージョンのPV-WAVEを使用している場合はバージョン7.5にバージョンアップする必要があります。ここからインストールしてください。
その後、以下の例のようにFINDFILEと同様の作業をSPAWNコマンドを使用して行います。

例)
WAVE> pwd
WAVE> SPAWN, 'dir /B *.pro', /fast, files
WAVE> print, files

尚、PV-WAVEのコンソールウィンドウを使用すると、表示結果が正しく表示されない場合がありますので、PV-WAVEのホームウィンドウをお使い下さい。

目次戻る

[020208] Linux用のPV-WAVEでカラ-表示がしたい。

PV-WAVEは、8ビットカラーと24ビットカラーの2種類に対応しております。ですから、OSの設定を8ビットか24ビットのどちらかに変更していただく必要があります。PV-WAVEでのカラー表示の方法も8ビットと24ビットでは異なります。

8ビットの場合

WAVE> LOADCT ;カラーテーブルを呼び出し、使用するカラーテーブルを選択します。
WAVE> x = [1, 2, 3, 4]
WAVE> PLOT, x, Color=15 ;カラーテーブルの15番の色を使いプロットを実行します。

24ビットの場合

WAVE> x = [1,2,3,4]
WAVE> PLOT, x, color='FF0000'X ;色の指定はRGBを16進表記で指定します。

注)RGBの指定はBGRの順です。例えば、青を指定する場合は、Color='FF0000'X,緑を指定する場合は Color='00FF00'X, 赤を指定する場合は、Color='0000FF'Xとなります。

目次戻る

[011109] PV-WAVEをランタイムモードで動かすことができません。

ランタイムモードで実行するにはランタイム版のライセンスが必要です。今のライセンスは開発も実行もできるもので、実行だけができるランタイム版のライセンスはついていません。しかし、付けてもらうことはできるので、ご希望ならLABCOMまでご連絡ください。

ランタイムモードを使わずにランタイム風に実行したい場合は、wavestartupファイル(C:\VNI\wave\bin\wavestartup)の最終行に、PV-WAVEソースをコンパイルし実行する記述を書くことによっても行えます。

例: .run TEST

実行後 PV-WAVE を終了させるには、さらに次の行に、
EXIT
と書きます。

wavestartup でないファイルに書きたければ、別のファイルに記述し、コマンドプロンプトで
C:\VNI\wave\bin\bin.i386nt\wave.exe ファイル名
で、実行できます。

さらに、wavestartup を実行したくなければ、コマンドプロンプトで
SET WAVE_STARTUP=ファイル名
C:\VNI\wave\bin\bin.i386nt\wave.exe
としてください。

目次戻る

[011030] PV-WAVEは'netCDF'フォーマットに対応していますか?

PV-WAVEは'netCDF'フォーマットに対応しています。
PV-WAVEは独自のHDFライブラリのインターフェースを持っているため、そちらを使用してHDFライブラリをコールすることができます。
PV-WAVE上で使用できるNetCDFインターフェース関数のリストは「PV-WAVE ニューフィーチャーズガイドVol.1」のP127をご参照下さい。
これらの関数の詳細については、C:\VNI\hdf-4_01\doc以下のドキュメントをご覧になってください。

これらの関数を使用する前に、必ず
@hdf_startup を実行してください。

例)
WAVE> @hdf_startup
WAVE> status = NCOPEN(path, mode)
WAVE> status = NCREDEF(cdfid)

HDFフォーマットは、PV-WAVE5.0より対応しています。

目次戻る

[011012] ハードディスクをフォーマットしなおし,PV-WAVEを再インストールしたのですが,利用できません.

ディスクを(論理)フォーマットするとドライブのシリアル番号が変わってしまいますので,新しいライセンスキーの再発行を受ける必要があります.
ライセンスキーは,第1ハードディスクドライブ(通常はCドライブ)のボリュームシリアル番号に対して発行されます.詳しくはこちらをご覧ください.

ライセンスキーの発行

目次戻る

[011011] PV-WAVEをインストールしライセンスキーの発行を受けたのですが,利用できません

次の事を確認してください.

  1. ボリュームシリアル番号(Windows版)またはホストID(Linux版)は間違っていませんか?
    【Windows版】
    第1ハードディスクドライブ(通常はCドライブ)
    のボリュームシリアル番号を再度確認してください.

    コマンドプロンプトを開き,次のコマンドを入力してください.
    VOL C:

    <注意>PV-WAVEをインストールするドライブが第1ハードディスクドライブ(通常はCドライブ)以外でも、第1ハードディスクドライブのボリュームシリアル番号が必要です.詳しくはこちらをご覧ください.

    【Linux版】
    ホストIDを再度確認してください.

    LMHOSTID あるいは /usr/local/vni/license/bin/lmhostid と入力してください.

  2. インストール後にライセンスファイルの作成,あるいは置換えをしましたか?
    【Windows版】
    発行を受けたライセンスファイルの内容で,[PV-WAVEのインストールされているフォルダ]\license\license.lic(PV-WAVE8.0以前は\license\license.dat)ファイルを作成します.
    既にライセンスファイルがある場合は、内容を置換えます.
     
    【Linux版】
    発行を受けたライセンスファイルの内容で,[PV-WAVEのインストールされているディレクトリ]/license/license.lic(PV-WAVE8.0以前は\license\license.dat)ファイルを作成します.
     
  3. ライセンスファイル名は間違っていませんか?
    ラセンスファイルを保存する時、テキストファイルで保存してしまうと、「license.lic.txt」や「license.txt」という名前で保存されてしまいます。
    再度、ファイル名を確認してください。
    また、綴りを間違えて保存される方がいらっしゃいます。「license.lic」が正しい綴りです。「licence.lic」ではありません。
目次戻る

[011010] IMSLライブラリが使用できないのは?

IMSLライブラリの使用には,初期化宣言が必要です。
使用前に1回だけ次のコマンドを実行してから数学関数を実行してください。

@math_startup

目次戻る

[010716] ソフトウェア(PV-WAVE7.0等)がダウンロードできないのは?

LABCOMが提供しているソフトウェアは、NIFS以外からはダウンロードできないよう制限(Ltd.)がついております.
次のことを確認後、再度ダウンロードして下さい.

目次戻る

[010424] PV-WAVE7.0ライセンスのフルサポートパッケージとは?

PV-WAVE7.0のライセンスがフルサポートパッケージに変更されました.変更内容は次のとおりです.

  変更前(2001/4/23以前) 変更後(2001/4/24以後)
パッケージ PV-WAVE Advantage PV-WAVE Extreme Advantage 
+ ODBC Connection
内容 Advantage Extreme Advantage
    (Advantage +
     Signal Processing Toolkit +
     Image Processing Toolkit)
ODBC Connection

*Linux版はExtreme Advantageのみ

フルサポートパッケージへの変更に伴い、ライセンスファイルの内容も3行から5行に変更になりました.フルサポートパッケージをご利用になりたい方は、再度ライセンスファイルの申請を行ってください.

上記のツールキット類やオプションを使用する場合には,予めインストール時のセットアップオプション選択画面で,標準インストールではなく"CUSTOM"を選び,インストール・使用したいオプションのチェックボックスを全て選択して,セットアップを実施して頂いている必要があります.
既に標準インストールをされている場合は,再度,CUSTOMインストールを実施してください.

 
"CUSTOM"
を選択

 
使用するオプション全てにチェックを付ける(全部つけて良い)

目次戻る

この Web に関する問題または質問等については,LABCOM までご連絡下さい.