Я получил сообщение об ошибке: «Недопустимый список параметров» из моей функции, которая позволила Octave открыть текстовый файл и прочитать его, чтобы получить входные данные для моей работы.
function [machNumbers]=readsrm(testfile.txt)
fid = fopen('testfile.txt','w');
fskipl(fid, 3);
# read number of machnumber
numMachNumber = fscanf(fid, "%i", 1)
fscanf(fid, "%s", 5);
machNumbers = fscanf(fid, "%f", numMachNumber);
fclose(fid);
endfunction
Обновлено:
Я обновил свой код и теперь у меня ошибка: «error: fskipl: invalid stream number = -1».
Мой код выглядит так:
function [machNumbers, weights, altitudes, specificRanges]=readsrm(myfilename)
myfilename = "filename"
fid = fopen(myfilename,'r');
fskipl(fid, 3);
fclose(fid);
endfunction
Обновлено:
Вышеупомянутые проблемы решены, спасибо. :) Теперь проблема в том, что мой цикл for не работает правильно. С этим кодом я не получаю никаких параметров из своего текстового файла.
Вот код:
function [machNumbers, weights, altitudes, specificRanges]=readsrm(myfilename)
myfilename = "testfile.txt"
fid = fopen(myfilename,'r');
fskipl(fid, 3);
# read number of machnumber
numMachNumber = fscanf(fid, "%i", 1)
fscanf(fid, "%s", 5);
machNumbers = fscanf(fid, "%f", numMachNumber);
# read weights
numWeights = fscanf(fid, "%i", 1);
fscanf(fid, "%s", 5);
weights = fscanf(fid, "%f", numWeights)
# rad altitudes
numFl = fscanf(fid, "%i", 1)
fscanf(fid, "%s", 5);
altitudes = fscanf(fid, "%f", numFl)
irrelevantValues = fscanf(fid, "%s", 7)
for flightLevel= 1:numFl
for weight = 1:numWeights
specificRanges(flightLevel, weight, 1:numMachNumber) = fscanf(fid, "%f", numMachNumber);
endfor
endfor
fclose(fid);
endfunction
и кстати, вы никогда не должны добавлять скриншоты исходного кода
Вы не должны постепенно добавлять все больше и больше вопросов, как только вы получите ответ на свой первоначальный вопрос. Вместо этого, пожалуйста, приведите его в форму, чтобы он мог быть полезен другим, и начните новый вопрос с недавно возникшей проблемой.

function [machNumbers]=readsrm(testfile.txt)
не является действительным объявлением функции. Вы хотите указать допустимое имя переменной, например
function [machNumbers]=readsrm(myfilename)
fid = fopen(myfilename,'r');
...
а затем вызовите свою функцию как
machNumbers = readsrm("testfile.txt");
и, конечно, вы, очевидно, хотите читать из fid, поэтому вам нужно fopen файл с "r" (доступ для чтения), а не с "w" (доступ для записи)
Привет, Энди, спасибо за ответ. Я обновил свой код. Но теперь я получил эту ошибку. "ошибка: fskipl: недопустимый номер потока = -1" My code Looks like this: function [machNumbers, weights, altitudes, specificRanges]=readsrm(myfilename) myfilename = "filename" #function [machNumbers, weights, altitudes, specificRanges]=readsrm(filename) fid = fopen(myfilename,'r'); fskipl(fid, 3); fclose(fid); endfunction
если fopen возвращает -1, это означает, что он не нашел файл. И попробуйте обновить свой код в вопросе. Есть несколько повторяющихся частей, и я не уверен, что это просто ошибка при вставке вашего кода сюда, в Stackoverflow, или вы действительно пытаетесь это сделать.
Да, я сделал это несколько минут назад. :)
Я сомневаюсь, что имя вашего файла - «имя файла» или это так? И нет смысла перезаписывать аргумент функции myfilename внутри функции.
Я объявил свою переменную myfilename с именем файла следующим образом: myfilename = "filename.txt". Если я этого не сделаю, то получу ошибку: «error: 'myfilename' undefined (...)».
Я не использовал октаву, но, может быть, использовать
" "вместо' '(как в остальной части вашего кода)?