чтение данных в массив MATLAB

Я пишу код для решения Ax=b с помощью MATLAB x = AB. Я считаю, что моя проблема заключается в получении данных из файлов в массив. Прямо сейчас, вектор решения выходит, чтобы быть нагрузка 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 = Ab;

% 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);

Любая помощь была бы очень признательна.

1 ответ

  1. Я ответил на свой вопрос, но я чувствовал необходимость поделиться в случае, если кто-то еще имеет подобные проблемы.

    % 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’, как показано в моем коде. Матрица » а «- это, по сути, все числа в Столбцах с 1 по 10, а матрица » в » — это 11-й (и последний) столбец.

    Используя функцию MATLAB x=A\b, я смог решить линейную систему уравнений.