linuxのコマンドラインからmatlabを起動すると、異常な動作をしています。コマンドラインからmatlabを起動した後で、linux端末に何かが見つからない
私は、コマンドラインからMATLABで関数を実行するのlinuxでbashスクリプトをしましたし、次のようにC++で書かれたカスタム関数で他の操作を行います。
#!/bin/bash
# prepare input data just to be sure it has not been written by other test!
matlab2011a -nodesktop -nosplash -r "prepare_data_matlab('A'); quit"
# launch C++ program
...
# prepare more data
matlab2011a -nodesktop -nosplash -r "prepare_data_matlab('B'); quit"
スクリプトが終了すると、私はできませんコマンドには効果がありますが、私が端末で書いているものを見てください。私はreset
端末にする必要があります。
私はprepare_data_matlab('A')
でmatlabを起動するだけですが、問題は、オプションprepare_data_matlab('B')
で関数を実行したときに問題なくなります。
私は行ずつコメントし、問題がprepare_data_matlab('A')
で使用されていない
dlmwrite(file_name, B, ' ');
関数を呼び出し、そのオプションB
であることを見出しました。
この動作を回避するには、コマンドラインからmatlabをどのように実行すればよいですか? dlmwrite()
機能の既知のバグはありますか?
Iは、Ubuntuのバージョン12.04 64ビット、GNU bashのを、使用してい4.2.24(1)(x86_64の-PC-LinuxベースのGNU)とmatlab2011aを-release。 EDITED
:prepare_data_matlab('A')
ために生成された出力は
prepare_data_matlab('B')
ために生成された出力であることEDITED
ある:file_name
はstrcat(path_to_data,f);
場合path_to_data = /tmp/
とf = data_out.txt
として作成されます。マトリックスB
は前後には表示されません。
MATLABスクリプトは次のようにbashスクリプトから生成される前または後に端末への出力のみ:
echo "#### SELECT DATA FROM WORKSPACE ####"
matlab2011a -nodesktop -nosplash -r "prepare_data_matlab('B'); quit";
echo "#### Process Data as input in a C++ programs ####"
MATLAB関数がworkscapeからデータを選択し、次のようにディスクに保存:
function [ ] = prepare_data_matlab(type)
if strcmp(type,'A')
% load data from workscape
load ('workspace_with_my_arrays.mat', 'A');
% save data as a standalone variable
save('/tmp/A.mat', 'A');
elseif strcmp(type,'B')
% load data from workscape
load ('workspace_with_my_arrays.mat', 'B');
path_to_data = '/tmp/';
f = 'data_out.txt';
file_name = strcat(path_to_data,f);
% save data as a txt file
dlmwrite(file_name, B, ' ');
end
end
EDITED:玉葉-file workspace_with_my_arrays.mat
Name Size Bytes Class Attributes
A 610x340x103 170897600 double
B 610x340x103 170897600 double
P 610x340 1659200 double
t1 38855x100 31084000 double
t2 3921x2x100 6273600 double
さらに多くの配列がワークスペースにありますが、ロードするものがあります。
%% Load data from file
% Data is saved in a MATLAB variable or in TXT
if nargin ~= 1
error('Use: prepare_data_matlab([ A | B ])')
end
をし、次のコマンド:上が、引数エラーが次のようにチェックして掲載され
prepare_data_matlab
機能は同じである引数のエラーチェックで後に実行される
cd /data/matlab;
両方のケース(オプションA
とオプションB
)、つまりif
ステートメントの前。
出力をファイルにリダイレクトし( '>'を使ってシェルリダイレクトする)、端末を破壊する出力がどのように生成されたのかをお知らせください。 – mnagel
@mnagel質問をmatlabコマンドで生成された出力に更新しました。私は奇妙なキャラクターに気付かず、彼らが何を意味するか分からない。 – pQB
####データをワークスペース#### "'のメッセージが画面に正しく表示されますか? – cabad