從Linux中的命令行啓動MATLAB時,我有一個怪異的行爲啓動MATLAB後,在linux終端東西。缺少命令行
我在Linux中bash腳本,在命令行中MATLAB執行功能,並不會與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')
執行該功能。
我已經一行註釋行,發現問題與選項B
調用未在prepare_data_matlab('A')
使用的功能
dlmwrite(file_name, B, ' ');
。
所以,我應該怎麼通過命令行執行MATLAB來避免這種行爲?是否有dlmwrite()
函數的已知錯誤?
我使用Ubuntu的12.04 64位,GNU bash的,版本4.2.24(1)-release(x86_64的-PC-Linux的GNU)和matlab2011a。
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
不顯示之前或之後。
的唯一輸出到終端之前或從bash腳本生成如下的MATLAB腳本之後:從所述Workscape公司
echo "#### SELECT DATA FROM WORKSPACE ####"
matlab2011a -nodesktop -nosplash -r "prepare_data_matlab('B'); quit";
echo "#### Process Data as input in a C++ programs ####"
MATLAB函數選擇數據並將其保存到磁盤如下:
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
編輯:衛生組織-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
有在工作區中多個陣列,但這些都是我加載。
的prepare_data_matlab
功能是一樣的張貼以上但具有如下參數的錯誤檢查:
%% 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
和下面的命令:其在參數錯誤校驗中之後執行
cd /data/matlab;
這兩種情況(選項A
和選項B
),即在if
聲明之前。
(通過'>'殼重定向)輸出重定向到一個文件,並讓我們知道什麼是產生輸出破壞了終端。 – mnagel
@mnagel我已經用matlab命令生成的輸出更新了問題。我沒有注意到這些奇怪的人物,我不知道他們的意思。 – pQB
「##### SELECT DATA FROM WORKSPACE ####」'消息是否正確顯示在屏幕上? – cabad