PV-WAVE
wvstartup.sh スクリプトのバグで、2017版以降のバージョンでこの現象が発生することを確認しております。
以下のパッチを適用すれば正しく動作いたしますので、パッチを適用してください。
修正パッチ : wvsetup.sh.patch
$ sudo patch -b wvsetup.sh wvsetup.sh.patch
通常通り、インストーラでインストールを行う事ができます。
# ./pvwave_2023.2_rhel8_gcc8_x86-64.run
実行(wave -64)時にlibXm.so.4が見つからないとエラーが発生したら、以下のパッケージをインストールしてください。
# dnf install motif-2.3.4-27.el9.x86_64
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】
【対処2】
sizeof.proを明示的にコンパイルして新しいsizeof.cprを保存する
例)
WAVE> cd, 'C:\RW\hdf5-1_88\lib'
WAVE> .run sizeof
% Compiled module:
SIZEOF.
WAVE> compile, 'sizeof'
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の次バージョンで修正される予定です。
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用(最新バージョン)
インストール手順は次の通りです。
※PV-WAVEの起動は、(PV-WAVEのインストールされているディレクトリ)\wave\bin\bin.i386nt(32ビット版)、もしくはbin.win64(64ビット版)にあるwave.exeをダブルクリックしてください。
2013年5月22日現在、今後のバージョンでのWindows8のサポート予定がまだ立っておりません。
次期バージョンでのWindows8の対応に関してもまだ未定です。
Windows版のPV-WAVE8.51以降のライセンスファイルは、ターミナルサーバでは利用できず、専用のライセンスファイルが必要になります。(Linux版は通常のライセンスでターミナルサーバとして利用できます)
ターミナルサーバ用のライセンスファイルを取得したい場合や、変則的なディスク構成のマシン等どのドライブのボリュームシリアル番号を取得していいかわからない場合は、次のツールでホスト情報を取得することによりライセンスが参照するボリュームシリアル番号を取得することができます。このボリュームシリアル番号でライセンスを申請してください。(PV-WAVE10.0より前のバージョンは、取得方法が違いますのでこちらをご覧ください)
なお、このライセンスは、米国のローグウェーブ ソフトウエアに申請するため、ライセンスを取得するのに数日かかります。ご了承ください。
次の手順で取得したファイルをライセンス発行申請と一緒にお送りください。
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のアンインストールを行うことができます。こちらを参考にアンインストールを行ってください。
※もしこの方法が上手くいかない場合は、手動でアンインストールする方法をお試しください。
何らかの原因でPV-WAVEのアンインストールが行えない場合、手動でアンインストールを行うことができます。
通常の使い方ですと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”という名称(任意)のコモンブロックを作成して使いました。
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)までご連絡ください。
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)
コンパイル済みPV-WAVEプログラムを次のようにランタイムモード"-r"で実行するとエラーになります。
例)wave -r ctrldisp1save
PV-WAVEのプログラムをランタイムモードで実行するには、ランタイムライセンスが必要です。
通常利用しているPV-WAVE開発ライセンスの場合、PV-WAVE起動時に指定できるファイルはPV-WAVEのオブジェクトコードではなくバッチファイルのみです。
PV-WAVEプログラム"ctrldisp1save"を実行するには、次の3通りの方法があります。
LINUX版PV-WAVE9.5/10.0ではgcc4.4及びOpenMotif2.2のインストールが必要になります。
LINUX版PV-WAVE9.5/10.0を利用する場合、”gcc4.4”及び”openmotif2.2”及びのインストールを行ってください。
次のコマンドでライブラリの追加が可能です。
yum install gcc44* openmotif22
PV-WAVE9.5の主な新機能は次の通りです。
通常はCドライブがブートドライブになっており、その場合はCドライブのボリュームシリアル番号でライセンス認証を行っておりますが、変則的なディスク構成のマシンの場合は、どのドライブのボリュームシリアル番号をライセンスに使用するかがわかりません。
その場合は、次の専用ツールを利用しライセンスが参照するボリュームシリアル番号を取得します。ここで取得したボリュームシリアル番号でライセンスの申請を行ってください。
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は無視します)
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のインストーラの場合はこの確認が省略され、確認が取れない為にインストールが上手くいかないようです。
*但しこの現象は必ず発生するという訳でもないようです。
【回避策】
こちらの方法でも正しくインストールされない場合は、インストールCDを貸出いたしますので、LABCOMまでご連絡ください。
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つをダウンロードしインストールしてください。
グラフ/可視化処理を行う場合、表現できる色数はアプリケーションを実行する端末に依存します。
loadctでカラーテーブルを指定してもグレースケールで表示されてしまうのは、ご使用の端末が24ビットカラー表示だと思われます。
24ビットカラー表示かどうかは、Infoコマンドで確認ができます。
WAVE> Info, /Device
Infoコマンドで”Visual Class”が"Direct Color"の場合にこの現象が発生します。
これを回避するには、PV-WAVEを立ち上げた直後に次のコマンドを入力してください。
WAVE> Device, True=24
ファイル名を拡張子やファイル名本体に分解するコマンドで’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
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
Windows 32ビット版または64ビット版で、PV-WAVE 9.0 またはPV-WAVE 9.5 のインストールが正常に終了しても、アプリケーションを起動しようとすると、次
のエラーが出て、アプリケーションが起動できない場合があります。
これは何らかの理由でインストーラが最終段階の処理で、アプリケーション本体(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が実行可能になります。
【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ビット版のみ動作可能ですが、正式なサポートの対象外となります。ご利用の際は、あらかじめご留意ください。
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
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の取得” に記述してあります。
インストールガイドをご覧ください。
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つの方法があります。
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に渡してください。
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
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は倍精度実数型配列になります。
まずは、PV-WAVE Advantage(IMSL Cライブラリ)の機能が使えるかを確認します。
PV-WAVE Advantage(IMSL
Cライブラリ)の機能が使えるか否かの判断は@Math_startupを実行した際にエラーが発生するかどうかで分かります。
Advantageの機能が使える場合は次のようなメッセージが表示されます。
WAVE> @math_startup
PV-WAVE IMSL Mathematics is initialized.
@math_Startup実行時にエラーが発生する場合は、以下をご確認ください。
【Nlinlsq関数の例題】
Inv関数が使えなくなる現象が起る原因として考えられるのは次の2点です。
まず、確認として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'が壊れているか或いは別関数として上書きされている可能性があります。
以下の処理を試してください。
Inv.cprを別名(Inv.cpr_org)に変更すると、Inv関数が呼ばれた時、ソースコード(Inv.pro)が自動コンパイル・実行されます。
以上を試し、原因を調べてください。
Windows版のPV-WAVE8.51以降のライセンスファイルは、ターミナルサーバでは利用できず、専用のライセンスファイルが必要になります。(Linux版は通常のライセンスでターミナルサーバとして利用できます)
ターミナルサーバ用のライセンスファイルを取得したい場合や、変則的なディスク構成のマシン等どのドライブのボリュームシリアル番号を取得していいかわからない場合は、次のツールでホスト情報を取得することによりライセンスが参照するボリュームシリアル番号を取得することができます。このボリュームシリアル番号でライセンスを申請します。
なお、このライセンスは、米国のローグウェーブ ソフトウエアに申請するため、ライセンスを取得するのに数日かかります。ご了承ください。
次の手順で取得したファイルをライセンス発行申請と一緒にお送りください。
(例外)
稀に、この専用ツールを使っても、ボリュームシリアル番号が取得できない場合があります。
その場合は、Macアドレスの取得によってライセンスを作成することができますので、次の手順でMacアドレスを取得し、その結果をメモ帳などにコピー&ペーストしライセンス発行申請と一緒にお送りください。
リモートディスクトップでPV-WAVE8.51を使用すると、次のようなエラーが表示され利用できません。
PV-WAVE8.51以降のライセンスファイルでは、リモートディスクトップでは利用できなくなっております。
リモートディスクトップで利用するには、専用のライセンスファイルが必要です。
こちらを参考にターミナルサーバ用のライセンスを取得してください。
Linuxカーネルのバージョンの違いが原因だと思われます。(ローグウェーブ ソフトウエア ソフトウェア(株)談)
回避策ですが、PV-WAVEのLinux/UNIX版の場合、一旦他の環境にインストールしたPV-WAVEのインストールディレクトリ以下全てのファイルをコピーする事によりPV-WAVEをお使い頂けます。
具体的には、
以上で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環境でお読みください)
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. →'キーワードの省略形があいまい'
以上ご理解の上、キーワード名の変更或いは変数の引渡し方法を変える等の対応をご検討ください。
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
プロシージャ内からRestoreコマンドを実行するとエラーが発生します。
これを回避する為のSave/Restoreのキーワードはありませんが、次の方法で回避できます。
[サンプルプログラム]
SaveTest.pro
RestoreTest.pro
variables.pro
Movieコマンドはコマンドとして古いく、制御が難しく環境によっては動作が安定しない為、現在ご使用はお薦めしておりません。
Movieを使用した例)
movie_test.pro
代わりとして、WgAnimateToolをご利用ください。
使い方はMovieコマンドとほぼ同じで、作成したプログラムからでも使用できますし、こちらの方が制御が簡単です。
WAVE> WgAnimateTool, image
WgAnimateToolを使用した例)
movie_test1.pro
WgAnimateTool(GUI)ではなく、Movieと同じように自動で動くものを使用したい場合は、Movie2プロシージャ(Movieプロシージャを修正したもの)を作成しましたので、こちらをご利用ください。
Movie2の実行方法はMovieと同じですが、早さの制御方法はマウスで行います。
マウス左ボタン →表示速度を遅く
マウス右ボタン →表示速度を早く
Shitキー+マウス左ボタン →アニメーション終了
*MicroSoft
WindowsでMovie2を利用する場合は、Windowコマンドに必ず'Nometa'キーワードを付けてお使いください。
Movie2を使用した例)
movie_test2.pro
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までの範囲のみ描画を行いそれ以外は表示しません。
ErrPlotコマンドにはClipキーワードはありません。
ErrPlotのソースコード(ErrPlot.pro)を一部変更し、Clipキーワードを追加したもの(ErrPlot2.pro)を作成しました。
こちらを、"PV-WAVEインストールフォルダー\wave\lib\std"に保存してご利用ください。
PV-WAVEのコンソールウインドウ、ホームウインドウ共にスクロールを停止する機能はありませんが、 Printコマンドで表示する内容や表示の仕方によっては、 次のような対応策があります。
通常、Cドライブがない場合,システムディスクのボリュームシリアル番号を使用してライセンスを登録しますが,何らかの原因で正常に動作しない場合は,
Ethernetアドレスを使用した別の方法でライセンスを登録することが可能です.
まず,こちらの手順に従ってもう一度内容を確認してください.
これでも問題が解決しないようでしたら,ローグウェーブ ソフトウエア ジャパン(株)に直接連絡してください.
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が正しくないと起こります.wvsetup.sh (sh) wvsetup (csh) の2つの初動ファイルは,同ディレクトリ内にある make_setup ユーティリティでインストール時に生成されますが,RHEL4のインストールtarボールを展開して,同ユーティリティで再生成する際に,
WAVE_DIR=/usr/local/vni/wave
# 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 とも動作確認済です.
例:
set_plot,'WMF'
device,/print,xoffset=xx,yoffset=xx
プロットコマンド
device,/close_file → ディフォルトプリンタに出力されます。
TVRDコマンドはオプションTrueを指定することによってTrueカラーで画像を取り出せます。
次の画像の取り出しと保存のサンプルプロシージャを参考にしてください。
PV-WAVEマニュアルをローグウェーブ ソフトウエア ジャパン(株)より、直接購入することができます。
詳しくはこちらをご覧ください。
フルカラーディスプレー上でカラー設定を行う場合、通常次の例の様に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
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
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)]
フルカラーのディスプレーにカラーを表示する場合は、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)
PV-WAVEのメーリングリスト「PV-WAVE ユーザ友の会」は下記にあります。ご覧ください。
http://www.freeml.com/ctrl/html/MLInfoForm/pv-wave@freeml.com
複数の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)]
名前付きの構造体(named structure)は、一旦定義した後に構造体の要素の形式を変更する事はできません。
名前なしの構造体(unnamed structure)ですと、その様な制限はありませんので、こちらをご使用下さい。
名前なし構造体の詳細は、PV-WAVE8.0 Programmer's guide 第6章 working with structures をご参照下さい。
上記のようなコマンドはありませんが、以下の様に数行のコマンドで最小値のインデックスの要素を簡単に求める事ができます。
例えば、
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
離散データを2次元の格子データに変換するには、関数 GRID_3D もしくは FAST_GRID3 を使用します。
例)
WAVE> points = RANDOMU(seed, 3, 100)
WAVE> result = FAST_GRID3(points, 20, 20)
WAVE> Shade_Surf, result
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
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 をご覧下さい。
プロシージャ/関数が停止した状態から、他のプロシージャ/関数をコンパイルする事はできませんが、割り込みやエラーで停止したプロシージャ/関数を.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に説明があります。ご参照ください。
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)での標準動作環境と位置づけ、動作検証実施プラットホームとして利用すると共に、ユーザ各位に利用を推奨しております。
カメラから収集された画像データを表示する方法は次のとおりです。
以上で次のような画像が表示されます。
tvscl、movieでカラー表示なしの場合(画像をクリックすると大きな画像が表示されます)
tvscl、movieでカラー表示した場合(画像をクリックすると大きな画像が表示されます)
WgAnimateToolでカラー表示した場合(画像をクリックすると大きな画像が表示されます)
PLOTでx軸、y軸の太さを変えるにはシステム変数![XYZ].Thick を使用します。
通常は1.0に設定してあります。
例)x軸を通常の2倍にする場合。
WAVE> !X.Thick = 2.0
WAVE> PLOT, [1,2,3]
デフォルトの太さに戻すには
WAVE> !X.Thick = 1.0
と入力します。
DERIVコマンドの微分はデータ点の両隣から出すようですが、データのばらつきにより微係数がばらついてしまうのを避けるため、データ点の前後数点を用いて平均的な微係数を求めるコマンドはあるでしょうか?
残念ながら、そのようなコマンドはありません。
DERIV関数のソースコード(deriv.pro) がVNI_DIR¥wave\lib\std にありますので、そちらを一部修正していただく事になります。
修正する際は、オリジナルのソースコードを別名で保存する、もしくは別名で保存したコードを修正する事をお勧めします。
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を削除してからご利用ください。
Linknload関数はString型の値をCのReturn値として受け取る事ができます。その際、PV-WAVEがが受け取る文字列に長さの制限はありません。
次のサンプルプログラム(Linknloadを使ってC言語からPV-WAVEに文字列を返す)を参考にしてください。
*各サンプルプログラムをダウンロードしてご使用になる場合は、拡張子.txtを削除してからご利用ください。
関連:[030515-1] PV-WAVE String型データ長の限界は?
[030515-2]
LinknLoad関数のパラメータのサイズは変更できますか?また返値は文字列を指定できますか?
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が自動的に開放するという件に関しましては、本社開発チームに改善要求を提出しております。
これはPV-WAVE がプログラム実行時に使用するデータ領域(変数名などを記憶しておく領域)が不足したときに出ます。
このエラーへの対処としては、次の2つがあります。
1.の方法ではソースを変更する必要があるので、すぐに対処したい場合は2.を行ってください。
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 ;青が表示される
-Dtry=__tryオプションフラッグは製品開発の時に使用したものであり必須ではありません。従って、このオプションフラッグを外してコンパイルしても特に問題ありません。
PV-WAVE7.5ではString型データの文字数の限界は特に設けておりません。PV-WAVEのマニュアルには文字数の上限値として32767と表記してありますがString型変数としての文字数制限はありません。但し、String型変数を扱う関数/コマンドには以下の様な制限があります。 ご注意ください。
STR='' ; -- NULL文字のみ、文字長0、使用不可 --
STR=' ' ; -- 空白文字、文字長1、使用可 --
本件に関しまして、改善要求を出しました。
ご不便をお掛けしますが、ご理解の程お願いいたします。
*各サンプルプログラムをダウンロードしてご使用になる場合は、拡張子.txtを削除してからご利用ください。
尚、LinknLoadには構造体を返値とする機能はありません。
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プログラム内でデータサイズを変更する事はできません。
PV-WAVEではcwavecというCの関数を用意しており、CのプログラムからPV-WAVEのコマンドやプロシージャを実行する事ができます。
しかし、このcwavec関数を利用して、LinknLoadでCallされるCプログラム内から、PV-WAVEのコマンドを実行しすると、メモリーエラーが発生してしまいます。
LinknLoadとcwavecは併用できません。
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にソースコードが提供されていますので,プログラムの詳細はそちらをご覧下さい。
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モードは、サポートの対象外となっておりますので、不具合などには対応できない場合があります。ご了承下さい。
インストールがエラーで終了したり、途中で「Failed to resolve JVM」というメッセージが出力され中断してしまうのは、環境変数のTMP及びTEMPにあると考えられます。
以下の手順で環境変数TMP(TEMP)を変更し、再度インストールを行ってください。
横長に表示するために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
計測タイミングシステム(DTS)の動作パラメータを取得するには、ODBC経由のプロシージャを作成します。ODBC経由のプロシージャを作成するには、次のものが必要です。
なお、サンプルプロシージャも公開しております。
§1.必要なもの
次のサンプルプロシージャを使用される場合は下記の使用手順に従ってください。
*各サンプルプロシージャをダウンロードしてご使用になる場合は、拡張子.txtを削除してからご利用ください。
■サンプルプロシージャ使用手順
■サンプルプロシージャ実行方法
dtsdelay(dtsfrequency),IPAddress,shotNumber,subShotNumber,channelNumber,dataArray
IPAddress : VMEのIPアドレス (例)133.75.175.100
shotNumber : ショット番号
subShotNumber : サブショット番号
channelNumber : チャネル番号
dataArray : データ構造体(取得したデータが格納されます)
■データ構造体の内容
この件に関しては、現在開発元に問い合わせ中です。
英語名の管理者IDからインストールを行なってください。
エラーの発生するマシンのシステム日付が、こちらが発行したライセンスの日付より以前の日付けがセットされている場合、次のようなエラーが発生します。
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".
システム日付を確認し、正確な日付をセットしてください。
FINDFILE 関数の不具合である事が確認されております。この件につきまして開発元に改善の要求が出されていますが、改善の時期などは未定です。
【回避策】
旧バージョンのPV-WAVEを使用している場合はバージョン7.5にバージョンアップする必要があります。ここからインストールしてください。
その後、以下の例のようにFINDFILEと同様の作業をSPAWNコマンドを使用して行います。
例)
WAVE> pwd
WAVE> SPAWN, 'dir /B *.pro', /fast, files
WAVE> print, files
尚、PV-WAVEのコンソールウィンドウを使用すると、表示結果が正しく表示されない場合がありますので、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となります。
ランタイムモードで実行するにはランタイム版のライセンスが必要です。今のライセンスは開発も実行もできるもので、実行だけができるランタイム版のライセンスはついていません。しかし、付けてもらうことはできるので、ご希望なら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
としてください。
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より対応しています。
ディスクを(論理)フォーマットするとドライブのシリアル番号が変わってしまいますので,新しいライセンスキーの再発行を受ける必要があります.
ライセンスキーは,第1ハードディスクドライブ(通常はCドライブ)のボリュームシリアル番号に対して発行されます.詳しくはこちらをご覧ください.
次の事を確認してください.
コマンドプロンプトを開き,次のコマンドを入力してください.
VOL C:
<注意>PV-WAVEをインストールするドライブが第1ハードディスクドライブ(通常はCドライブ)以外でも、第1ハードディスクドライブのボリュームシリアル番号が必要です.詳しくはこちらをご覧ください.
【Linux版】
ホストIDを再度確認してください.
LMHOSTID あるいは /usr/local/vni/license/bin/lmhostid と入力してください.
IMSLライブラリの使用には,初期化宣言が必要です。
使用前に1回だけ次のコマンドを実行してから数学関数を実行してください。
@math_startup
LABCOMが提供しているソフトウェアは、NIFS以外からはダウンロードできないよう制限(Ltd.)がついております.
次のことを確認後、再度ダウンロードして下さい.
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"を選択
使用するオプション全てにチェックを付ける(全部つけて良い)