错误更新散射:数据长度必须匹配——但是他们做……

7视图(30天)
你好,
我试图使用一个连续的值改变滑块的UI添加一个第四维度(时间)图形显示的位置GNSS卫星导航解决方案中使用。
函数myslider (gnss,真理)
[x_earth, y_earth z_earth] =椭球(0,0,0,6378137,6378137,6356752.31424518,30);
图();冲浪(x_earth y_earth z_earth,“EdgeColor”,“# 0072 bd”,“FaceColor”,“# 0072 bd”,
“FaceAlpha”,0.3);持有;%画出地球
truth.pos scatter3 (truth.pos (1) (2), truth.pos(3), 85年,“MarkerFaceColor”,“y”,“MarkerEdgeColor”,“k”,“标记”,“p”);%添加真理
u_tow =独特(gnss.tow);
幻灯片= min (u_tow): 1:马克斯(u_tow);
颜色= gnss.gnssId;%添加一个唯一的颜色来识别每一个星座
颜色(颜色(:1)= = 0,1:3)= repmat((0、0.4470、0.7410),笔(颜色(:1)= = 0),1);
颜色(颜色(:1)= = 2,:)= repmat((0.8500, 0.3250, 0.0980),笔(颜色(:1)= = 2),1);
色彩(色彩(:1)= = 6:)= repmat((0.4660, 0.6740, 0.1880),笔(颜色(:1)= = 6),1);
hplot = scatter3 (gnss.satPos (gnss。拖= =幻灯片(1),1),gnss.satPos (gnss。拖= =幻灯片(1),2),
gnss.satPos (gnss。拖= =幻灯片(1),3),((gnss求和。拖= =幻灯片(1)),1)* 25,颜色(gnss。拖= =幻灯片(1):),“填充”);
h = uicontrol (“风格”,“滑块”,“单位”,“像素”,“位置”(20 250 20),“最小值”,1“马克斯”元素个数(u_tow),
“价值”,1“SliderStep”[0.001 - 0.5]);
addlistener (h,“ContinuousValueChange”@ (hObject事件)makeSlidePlot (gnss hObject hplot,幻灯片,色彩,真理));
结束
函数makeSlidePlot (gnss hObject hplot,幻灯片,色彩,真理)%真理不添加到试图阻止错误当卫星可用
n =得到(hObject“价值”);n =圆(n);
集(hplot,“xdata”,(truth.pos (1);gnss.satPos (gnss。拖= =幻灯片(n), 1)”,“ydata”,(truth.pos (2);gnss.satPos (gnss。拖= =幻灯片(n), 2)”,“zdata”,(truth.pos (3);gnss.satPos (gnss。拖= =幻灯片(n), 3)”,cdata的,(1 1 0;颜色(gnss。拖= =幻灯片(n), 1:3)]);
集(gca),“XLim”(-10000000 30000000),“YLim”(-10000000 30000000),“ZLim”,(-10000000 30000000));
drawnow;
结束
函数能够画出初始数据没有问题,但是当更新它给的值以下错误:
  • 警告:错误更新散射。数据长度必须匹配。
这发生在函数makeSlidePlot集(hplot入手
我试着观察哪些值被分配到“xdada”/“ydata”/“zdata”/“cdata”这个错误发生时,不知道为什么他们不工作。作为一个例子,一些值低于(手工输入,而不是实际的matlab代码只是用于简单的阅读):
x_data = [4.001157205000000 e + 06; 2.572546709530618 e + 07; 8.678234779917900 e + 06; 3.952943480663775 e + 06];% 4 x1
y_data = [-1.430807600000000 e + 04; 3.867255631461378 e + 06; -1.347380604311346 e + 07; 1.025898885350909 e + 07];% 4 x1
z_data = [4.950553757000000 e + 06; 6.564856076579228 e + 06; 2.489296866319447 e + 07; 2.302901468983255 e + 07];% 4 x1
c_data = (1.0000 - 1.0000 0;
0 0.4470 - 0.7410;
0.8500 0.3250 0.0980;
0.4660 0.6740 0.1880);% 4 x3
如果你能提供一些见解很感激。或者你更喜欢,我简化变量的代码和名称请让我知道。
提前谢谢! !(顺便说一句:使用Matlab R2019b)。
编辑:按照评论,附加的数据 gnss 真理 和一个图像的错误/警告 在RunSimLite(52行)警告:错误更新散射。数据长度必须匹配。>在defaulterrorcallback(12行)在RunSimLite > makeSlidePlot(第191行)在RunSimLite > @ (hObject、事件)makeSlidePlot (gnss hObject hplot,幻灯片,色彩,真理)(第183行)
3评论
克里斯·拉皮埃尔
克里斯·拉皮埃尔 2021年8月6日
编辑:克里斯·拉皮埃尔 2021年8月6日
我不得到一个错误在R2019b这些函数的运行时数据。我浏览整个数据集。
尝试运行下面的代码在你的MATLAB与数据共享,看看它的工作原理。
负载matlabQuestion.mat
myslider (gnss,真理)
函数myslider (gnss,真理)
[x_earth, y_earth z_earth] =椭球(0,0,0,6378137,6378137,6356752.31424518,30);
图(“可见”,“上”);
冲浪(x_earth y_earth z_earth,“EdgeColor”,“# 0072 bd”,“FaceColor”,“# 0072 bd”,
“FaceAlpha”,0.3);持有;%画出地球
truth.pos scatter3 (truth.pos (1) (2), truth.pos(3), 85年,“MarkerFaceColor”,“y”,“MarkerEdgeColor”,“k”,“标记”,“p”);%添加真理
u_tow =独特(gnss.tow);
幻灯片= min (u_tow): 1:马克斯(u_tow);
颜色= gnss.gnssId;%添加一个唯一的颜色来识别每一个星座
颜色(颜色(:1)= = 0,1:3)= repmat((0、0.4470、0.7410),笔(颜色(:1)= = 0),1);
颜色(颜色(:1)= = 2,:)= repmat((0.8500, 0.3250, 0.0980),笔(颜色(:1)= = 2),1);
色彩(色彩(:1)= = 6:)= repmat((0.4660, 0.6740, 0.1880),笔(颜色(:1)= = 6),1);
hplot = scatter3 (gnss.satPos (gnss。拖= =幻灯片(1),1),gnss.satPos (gnss。拖= =幻灯片(1),2),
gnss.satPos (gnss。拖= =幻灯片(1),3),((gnss求和。拖= =幻灯片(1)),1)* 25,颜色(gnss。拖= =幻灯片(1):),“填充”);
h = uicontrol (“风格”,“滑块”,“单位”,“像素”,“位置”(20 250 20),“最小值”,1“马克斯”元素个数(u_tow),
“价值”,1“SliderStep”[0.001 - 0.5]);
addlistener (h,“ContinuousValueChange”@ (hObject事件)makeSlidePlot (gnss hObject hplot,幻灯片,色彩,真理));
结束
函数makeSlidePlot (gnss hObject hplot,幻灯片,色彩,真理)%真理不添加到试图阻止错误当卫星可用
n =得到(hObject“价值”);n =圆(n);
集(hplot,“xdata”,(truth.pos (1);gnss.satPos (gnss。拖= =幻灯片(n), 1)”,“ydata”,(truth.pos (2);gnss.satPos (gnss。拖= =幻灯片(n), 2)”,“zdata”,(truth.pos (3);gnss.satPos (gnss。拖= =幻灯片(n), 3)”,cdata的,(1 1 0;颜色(gnss。拖= =幻灯片(n), 1:3)]);
集(gca),“XLim”(-10000000 30000000),“YLim”(-10000000 30000000),“ZLim”,(-10000000 30000000));
drawnow;
结束

登录置评。

接受的答案

戴夫B
戴夫B 2021年8月6日
编辑:戴夫B 2021年8月6日
我敢打赌,这是 SizeData 最初,你设置:
((gnss求和。拖= =幻灯片(1)),1)* 25
所以它与其他数据匹配属性的长度。但是后来你改变其他的长度和跳过 SizeData
我认为如果你不期望改变sizedata,你可以将它设置为 25 最初,如果你将其设置为一个标量,那么 散射 应该同意扩大与其他数据的长度属性。
1评论
梅根Jurczak
梅根Jurczak 2021年8月9日
绝对完美,非常感谢!这样一个愚蠢的错误在我的一部分,我很高兴终于把它解决了。我真的很感激你的努力和简洁的答案:)

登录置评。

更多的答案(0)

下载188bet金宝搏


释放

R2019b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!