求教matlab問題for k=1:epochNUM%data=ones(k,num_sats)*NAN;code=Ob

題目:

求教matlab問題
for k=1:epochNUM
%data=ones(k,num_sats)*NAN;
code=ObsODat(k).SatCode;
PP1=ObsODat(k).Obs_RangeP1;
PP2=ObsODat(k).Obs_RangeP2;
LL1=ObsODat(k).Obs_FreL1;
LL2=ObsODat(k).Obs_FreL2;
for j=1:num_sats
I=find(code==num_PRN(j));
if isempty(I)
fprintf('Error in finding unique satellites in REFRINEX.\n');
return;
end
data_P1(k,j)=PP1(I);
data_P2(k,j)=PP2(I);
data_L1(k,j)=LL1(I);
data_L2(k,j)=LL2(I);
end
end
這是我程序的部分,主要問題是,讀第一行數據,得到的code,與設定好的num_PRN進行比較,然後對數據PP1,等進行存儲,但是讀第二行及後面行的時候,code(從文本文件中讀取)的值和num_PRN一樣了.怎麼樣才能讓每一次讀取的code值是原文件中的排列方式,

解答:

你說的從第二行開始「code的值和num_PRN一樣」是什麼概念?
從你的代碼看,可能改變code值的只有一句:
code=ObsODat(k).SatCode;
應該不會是這段代碼誤改了code.
因爲沒有你的具體數據,只能作如下猜測:code是一個向量,包括了多個衛星的編號,而num_PRN也是一個向量,可能的含義是希望顯示或列印的衛星編號,二者的可能取值範圍應該相同,但具體向量應該是不一樣的
再問: 不一樣,num_PRN 表示的是,一個觀測文件中,出現的所有衛星號的集合,而code只是每一個曆元的觀測衛星號,現在我想判斷code和num_PRN比較,把code對應衛星的觀測類型值(P1,P2等)按矩陣【曆元,衛星號】格式存儲。 在進行find判斷時,曆元k從第二個開始時。code=ObsODat(k).SatCode;但是,顯示的卻是和num_PRN一樣的排序(num_PRN排序是升序排列),而不是觀測文件中所觀測到的衛星號排列
再答: 我覺得問題應該出在這段代碼之外。 請你在這段代碼之前設個斷點(比如,就設在for k的位置),看看ObsODat(2).SatCode是否已經存在你說的問題。 還解決不了的話,可把能夠復現你的問題所需代碼和數據文件發給我(企鵝522319871),我幫你查。

添加新評論

暱稱
郵箱
網站