2015-02-04 2 views
1

Мне нужно умножить три матрицы (X, Y и Z) вместе в Scilab. У меня есть 100 версий матрицы Z для заполнения данными из файла excel, и мне нужно умножить XYZ для каждой версии, я прекрасно делаю это для одной матрицы, но я не могу заставить процесс повторять 100 раз. Матрица Z имеет 7 столбцов поэтому на данный момент мой код выглядит примерно так:Scilab - заполнение 100 матриц от excel

Trial = read_csv("Testrun2.csv") 
index = 0 
while index<100 

    Z=[msprintf(Trial(1+(index*7),2)) msprintf(Trial(2+(index*7),2))... 

    Test = Z.*Y.*X 
    disp(index); 
    index = index + 1; 
end 

Я посмотрел в Интернете, но не могу найти ничего, что работает, любая помощь будет оценена.

Благодаря

Dan

ответ

1

Если вы используете msprintf, который будет производить строку, которая не может быть умножено на номер: "2"*2 выдаст сообщение об ошибке. Чтобы преобразовать строку в число, вы можете использовать strtod, и я думаю, что ее лучше сделать в начале, например.

T=strtod(Trial); 

После этого вы можете индексировать T обычным способом, например,

Z=T(1:3,1:3); 

Еще возможные решения: 1. ) read_csv имеют выходную строку матрицы по умолчанию, но вы можете изменить его в два раза, если вы хотите (см справку для read_csv). 2.) Если вы используете csvRead, его режим по умолчанию двойной, см. https://help.scilab.org/docs/5.5.1/en_US/read_csv.html