|
发表于 2019-5-16 17:19:42
|
显示全部楼层
本帖最后由 yanglsbb 于 2019-5-16 17:24 编辑
之前没有接触过卫星的知识,只是帮同学做毕设的程序设计部分。希望能帮到楼主。
- 1、
- for channelNr = activeChnList
复制代码
改为
- for channelNr = 1:numel(activeChnList)
复制代码
channelNr 应为1或2或3......或8。但诡异的原因,channelNr可能意外的变成一行矩阵[1,2,3,4,5,6,7,8],导致接下来使用channelNr 的代码报错
同样的问题出现在,
- %--- For all channels in the list ...
- for channelNr = channelList
复制代码
改为
- for channelNr = 1:numel(channelList)
复制代码
- activeChnList=intersect(find(satElev>=settings.elevationMask),readyChnList);
复制代码
改为
- 3、activeChnList=intersect(find(satElev>=settings.elevationMask),readyChnList,'legacy');
复制代码
或者
- activeChnList = intersect(find(satElev >= settings.elevationMask), ...
- readyChnList);
- if size(activeChnList,2) == 1
- activeChnList = activeChnList';
- end
复制代码
因为原本satElev=[inf,inf,inf,inf,inf,inf,inf,inf]为行向量,
第一次运行代码
- activeChnList=intersect(find(satElev>=settings.elevationMask),readyChnList);
复制代码
activeChnList仍为行向量
但代码往下运行satElev = navSolutions.channel.el(:, currMeasNr);
因为等号后面是列向量,导致
- satElev = [number_A;
- number_B;
- number_C;
- ......;
- number_H]
复制代码
第二次运行代码
- activeChnList=intersect(find(satElev>=settings.elevationMask),readyChnList);
复制代码 将会导致activeChnList变成列向量
进而引发接收机判断卫星数量时出错
- if size(activeChnList, 2) > 3
复制代码
size(activeChnList, 2)取activeChnList的列数,列向量为1,所以导致总是返回1.则程序就走不通。
所以保证activeChnList是行向量是关键。可以在activeChnList=intersect(find(satElev>=settings.elevationMask),readyChnList);之后添加'legacy',或者检测当activeChnList是列向量则转置。
|
|