2016-05-06 32 views
0

MATLABのx = A \ Bを使ってAx = bを解くコードを書いています。私は自分の問題は、ファイルから配列にデータを得ることにあると考えています。今、ソリューションベクトルは0の荷重になるように出ていますデータを配列に読み込むMATLAB

私が使っている行列はそれぞれ10行です。それらはテキストファイルに正しく整列されています。

% solve a linear system Ax = b by reading A and b from input file 
% and then writing x on output file. 
clear; 
clc; 
input_filename = 'my_input.txt'; 
output_filename = 'my_output.txt'; 
% read data from file 
fileID = fopen('a_matrix.txt', 'r'); 
formatSpec = '%d %f'; 
sizeA = [10 Inf]; 



A = load('b_matrix.txt'); 

A = A' 

file2ID = fopen('b_matrix.txt','r'); 
formatSpec2 = '%d %f'; 
sizeB = [10 Inf]; 

b = load('b_matrix.txt'); 
fclose(file2ID); 

b = b' 

% solve the linear system 
x = A\b; 

% write output data on file 


dlmwrite('my_output.txt',x,'delimiter',',','precision',4); 
% print screen 
fprintf('Solution vector is: \n'); 
fprintf('%4.2f \n', x); 

ご協力いただければ幸いです。

答えて

0

私は自分の質問に答えましたが、誰かに同様の問題がある場合に分かち合う必要があると感じました。

% solve a linear system Ax = b by reading A and b from input file 
% and then writing x on output file. 
clear; 
clc; 
input_filename = 'my_input.txt'; 
output_filename = 'my_output.txt'; 
% read data from file 
f = textread('a_matrix.txt', '%f'); 
vals = reshape(f, 11, []).'; 
A = vals(:,1:10); 
b = vals(:,11); 

% solve the linear system 
x = A\b; 

% write output data on file 

dlmwrite('my_output.txt',x,'delimiter',',','precision',4); 
% print screen 
fprintf('Solution vector is: \n'); 
fprintf('%4.2f \n', x); 

私は簡単にするために、単一のテキストファイルに「a」と「b」行列を組み合わせることになりました。これで、MATLABは列単位でデータを読み取ります。したがって、配列内のデータを正しく収めるためには、「reshape」を使用する必要があります。次に、私のコードで見られるように 'vals'関数を使って、列ごとに単一の行列から情報をフィルタリングしました。 'A'行列は本質的に列1から10までのすべての数であり、 'B'行列は11番目(最終的な列)です。

MATLABのx = A \ b関数を使用して、私は方程式の線形システムを解くことができました。

関連する問題