【问题标题】:Problem with processing function input variable in MatlabMatlab中处理函数输入变量的问题
【发布时间】:2019-11-21 13:06:32
【问题描述】:

所以我目前正在处理不同的数据集。有些是每月一次,有些是每天一次,但我想要每季度一次。这就是我编写以下函数的原因:

function y = average2(data, frequency)

% Monthly/Daily data to quarterly data by taking average  
% INPUT     data     Nx2      monthly/daily data
% OUTPUT    y        Mx2      quarterly data
% USAGE     average2(data)

if frequency == 'monthly';
   K = 1:3:(length(data)-3);                      
   quarterly = (data(K, 2)+data(K+1, 2)+data(K+2, 2))/3; 
   timevector = data(K, 1);
   y = [timevector quarterly];

elseif frequency == 'daily';
   y = data*data;                                   %just as an example, not correct calculation

else frequency ~= 'daily' || 'monthly';
   error('Requested frequency not available');

end

(每日的计算不是问题)。所以我的问题如下:如果我使用每月选项,一切正常。但每次我在函数中使用不同于“每月”的频率时,都会收到错误消息:

 Matrix dimensions must agree.

 Error in average2 (line 8)
 if frequency == 'monthly';

因此,激活 elseif 子句并处理我收到的频率输入不起作用。有谁知道我哪里有错误?提前致谢

【问题讨论】:

    标签: matlab function


    【解决方案1】:

    要比较字符串,请使用strcmp(区分大小写)或strcmpi(不区分大小写)函数。

    if(strcmp(frequency,'monthly'))
       K = 1:3:(length(data)-3);                      
       quarterly = (data(K, 2)+data(K+1, 2)+data(K+2, 2))/3; 
       timevector = data(K, 1);
       y = [timevector quarterly];
    
    elseif(strcmp(frequency,'monthly'))
       y = data*data;                                   %just as an example, not correct calculation
    
    else % frequency ~= 'daily' || 'monthly' % don't have to do this comparison and is not correctly coded
       error('Requested frequency not available');
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-13
      • 2015-11-30
      • 2016-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      相关资源
      最近更新 更多