matlab下标索引问题,MATLAB错误:下标索引必须是实数正整数或逻辑

让我们一次解决一个问题:

“Subscript indices must either be real positive integers or logicals.” well, the input variable “PriceMat” is the price matrix 60×10, and “Symbols” is 10×1 string.

看看你的CointPairs变量.这是使用find命令的结果.可能存在CointPairs产生空矩阵的情况.这是因为当你运行find时,可能会出现CointMatrix中没有条目的情况,它等于1(或实际上不为零).如果是这种情况,那么CointPairs实际上将为空,因为没有符合要求的元素.

因此,您获得该错误的原因是因为您在不允许的情况下尝试对空矩阵执行操作.在执行CointPairs = [rows,cols];之前,需要移动if语句.这样,您就不会遇到任何访问错误.换句话说,这样做:

[rows, cols] = find(CointMatrix);

CointPairs = [rows, cols];

%// Move here

if(isempty(CointPairs))

warning('No Cointegrated Pairs Found');

out = []; %// Make output empty - Must return something or you get an error

return

end

%// Continue here

cf= (CointPairs(:,1)-CointPairs(:,2))==0;

CointPairs(cf,:) = [];

%// More code here...

%// ...

我的一个小评论是你的输出变量已经输出,但你没有在代码中的任何地方分配它.这是故意的吗?

One more question 🙂 what’s exactly meant by “subscript indices”?

下标索引是您用于访问数组/矩阵中元素的值.例如,假设您的矩阵是:

A = [1 2 3; 4 5 6; 7 8 9];

通过做A(2,2),我们得到元素5.第2行和第2列被称为下标索引.指数意味着不止一个,因此您可以使用两个元素数组来访问矩阵的行和列,而不只是一对行和列位置.该对中的每对相应元素是下标索引.

基本上,它们是用于访问矩阵的行和列的数字.您只能使用正数(a.k.a.1,2,3,4 ……)或逻辑运算符(即true / false)访问矩阵/数组中的元素.不允许使用空矩阵,0,负整数或浮点数.

因为您使用上述两个有效输入访问矩阵,所以会出现该错误.

希望这可以帮助!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值