2014-11-12 2 views
0

У меня есть мои данные возвращаются в клетку, которая выглядит следующим образом (каждая сделка находится друг под другом в клетке, т.е. ее 5 по 4 кювете):выполнять операции рядом с строки в MATLAB

sell  50 FTSE     6500 
buy  100 Eurostoxx    3300 
buy  25 SP      1980 
buy  30 FTSE     6490 
sell  25 Eurostoxx    3315 

Во-первых, потому что у меня есть смешанные данные, возвращающиеся из моего запроса на базу данных в качестве ячейки, поэтому не уверены, что это проблема

Что бы я хотел сделать, это отметить их на рынке, поэтому у меня есть рыночная цена закрытия каждой из этих контракты в качестве переменной позволяют называть их FTSE_CLOSE, EUROSTOXX_CLOSE и SP_CLOSE.

Я хотел бы быть в состоянии сделать что-то, что идет следующим образом:

where coloumn 3 = "FTSE" and column 1 = "sell" then column 5 = column2 * (column4 - FTSE_CLOSE) 
where column 3 = "FTSE" and column 1 = "buy" then column 5 = column2 * (FTSE_CLOSE - column4) 

и так далее для других договоров.

В основном я борюсь со смешанным использованием строк и чисел

  1. мне нужно cell2mat все так у меня есть несколько векторов, а затем каким-то образом заглянуть в строковых векторов и выполнить calucaltion на других соответствующих векторов Do т.е. quantity * price - close_price
  2. есть более простой способ сделать это
+0

[Sprintf()] (http://www.mathworks.co.uk/help/matlab/ref/sprintf.html) может помочь. Вы можете работать над каждой строкой, соответственно. Что-то вроде этого: 'sprintf ('Цена% s на% d /% d /% d была $%. 2f.', 'EUR', 1,1,1,24.3);' – kkuilla

ответ

0

Я думаю, что вы просто ищете команду str2num

Вот одна идея:

input_data={"sell","50","FTSE","6500"; 
      "buy","100","Eurostoxx","3300"; 
      "buy","25","SP","1980", 
      "buy","30","FTSE","6490", 
      "sell","25","Eurostoxx","3315"}; 

closing_price.FTSE=6000; 
closing_price.Eurostoxx=3000; 
closing_price.SP=2000; 

for i=1:size(input_data,1) 
    if strcmp(input_data{i,1},'sell') 
     diff_from_market(i)=str2num(input_data{i,2}) ... 
      *(str2num(input_data{i,4})-closing_price.(input_data{i,3})); 
    elseif strcmp(input_data{i,1},'buy') 
     diff_from_market(i)=str2num(input_data{i,2}) ... 
      *(closing_price.(input_data{i,3})-str2num(input_data{i,4})); 
    end 
end 
diff_from_market 
Смежные вопросы