我在Matlab中创建了一个绘图,用于绘制几个GPS卫星的方位角和仰角.下面是绘制的GPS卫星轨迹的图像的示例.

但是,我也想S_4在同一个图上绘制指数(由电离层引起的闪烁效应).我想对每个GPS卫星路径进行颜色编码,以显示高S_4指数为红色,低S_4指数为蓝色.我有所有这些的数据,但我无法找到一种方法来对每个GPS路径进行颜色编码.
目前我知道每个卫星在每一天的位置(这是我能够绘制轨迹的方式).我也有S_4不同时间的索引值和不同的卫星(S_4索引矩阵与卫星位置矩阵的大小不同).
有任何想法吗?
这是我使用的功能.它使用一个名为plotMat:
plotMat=[svID(satellite id number), gpsSec, elevation(radians), azimuth(radians)]
Run Code Online (Sandbox Code Playgroud)
我的功能:
% find out from 'plotMat' if plotting satellite locations or trajectories in
% addition determine how many satellites are being tracked and how many
% samples for each satellite (# samples / satellite must always be equal)
gpsTime = plotMat(1,2);
i = 1;
t = gpsTime;
while ((i ~= size(plotMat,1)) & (t == gpsTime))
i = …Run Code Online (Sandbox Code Playgroud) 我有一个32x1 struct array.该数组的每个元素都有几个字段.我试图检查哪些元素是空的(完成),但后来我想创建一个包含所有非空元素的向量.
例如,我有struct array被叫satdata,我想看看该字段SVID是否为空,所以satdata(i).SVID.对于我的不同元素,SVID应该从1到32.但是如果有一个缺失的元素,那么它可以[1:4 6:10 11:32].所以我想创建一个列向量(对于这种情况)
[1;2;3;4;6;7;8;9;10;11;12;13;14;15;16;17;18;19...32].
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止:
for i = 1:32
if isempty(satdata(i).SVID)
continue
else
svid = satdata(i).SVID;
svIdVec(i,:) = svid;
end
end
Run Code Online (Sandbox Code Playgroud)
哪个正确检查空槽,但是当我创建向量时,我得到的东西看起来像svIdVec = [0,2,3,4...32].在这种情况下,只有第一个元素为空.因此,我想得到一个31x1矢量,如[2,3,4...32].
我通过循环遍历表单中的单元格(originalWS)在vba中创建一个数组.所以我们假设单元格(2,5)到(2,12)具有以下内容:
(2,5)Item
(3,5)Type
(4,5)Nominal Diameter
(5,5)Lead
.
.
.
(12,5)For Use with End Blocks
Run Code Online (Sandbox Code Playgroud)
因此,当我循环使用下面的代码时,我得到一个如下所示的数组:
[项目,类型,公称直径,铅,......,用于端块].
但是,我想在我的数组中的每个值之间添加两个空格.所以它看起来像这样:
[Item,"","",Type,"","",Nominal Diameter,"","",Lead,"","",......,用于结束块,"",""]
ReDim propertyArr(1, lastRow)
For i = 1 To lastRow
propertyArr(1, i) = originalWS.Cells(i + 1, 5).Value
Debug.Print propertyArr(1, i)
Next
Run Code Online (Sandbox Code Playgroud)
我试图通过数组的最终总大小循环到(lastRow*3)并向前走3.然而,我很难弄清楚如何重置我的orginalWS.cells(i,5)这些值是连续的.
换句话说,当我循环步进3时,我的值将是:
propertyArr(1,1) = originalWS.Cells(2,5).value
propertyArr(1,4) = originalWS.cells(5,5).value
propertyArr(1,7) = originalWS.cells(8,5).value
Run Code Online (Sandbox Code Playgroud)
我如何循环以便每2个位置将值存储在我的数组中,同时从片材中的连续列表中获取值.
我是否可以这样做而无需添加额外的空行,以便在原始循环中的每个值之间添加两个空格而不必添加额外的空行?
或者,我可以在第一次创建数组后在每个值之间添加两个空格?