在matlab中执行字符串旁边的操作

时间:2014-11-12 13:47:08

标签: string matlab numbers mixed

我将我的数据作为一个看起来像这样的单元格返回(每个交易在单元格中彼此相同,即它是一个5乘4的单元格):

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

首先是因为我混合数据从数据库查询作为单元格返回,因此不确定这是否存在问题

我想做的是将这些标记上市,因此我将每个合约的收盘价作为变量,我们称之为FTSE_CLOSEEUROSTOXX_CLOSE和{{1 }}。

我希望能够做一些如下的事情:

SP_CLOSE

等其他合同。

基本上我正在努力混合使用字符串和数字

  1. 我需要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) 一切所以我有几个向量然后以某种方式查看字符串向量并对其他相关向量执行calucaltion,即cell2mat
  2. 有更简单的方法吗

1 个答案:

答案 0 :(得分: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