我正在使用MATLAB编写代码来解决Ax = b x = A \ B。我相信我的问题在于将文件中的数据导入数组。现在,解决方案向量将成为0的负载
我使用的矩阵分别有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 :(得分: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函数,我能够求解线性方程组。