我有一组数据显示如下:
flow Rate (L/min)
Speed(rpm) 1 1.25 1.5 1.75 2 2.25 2.5 2.77 ... 6
Pressure (Pa)
2000 15251.2 15232 15200 15168 15027.2 14912 14752 0 ... 0
2050 16000 15840 15808 15744 15680 15520 15488 15232 ... 0
2100 16384 16256 16217.6 16192 16128 16064 16032 15872 ... 0
2150 17088 17024 16992 16960 16928 16832 16704 16512 ... 0
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
4250 61120 60800 60768 60736 60672 60736 60608 60416 ... 56960
如图所示,在特定速度(从2000-4250rpm)和流速(从1-6 L / min)出现不同的压力。
1)我想知道如何在这两种速度之间插入一个新行,例如,如果我的速度为2030rpm,我希望能够找到2030rpm中哪两个值并插入一行在matlab上 演示如下:
2000 15251.2 15232 15200 15168 15027.2 14912 14752 0 ... 0
2030 0 0 0 0 0 0 0 0
2050 16000 15840 15808 15744 15680 15520 15488 15232 ... 0
2)我的第二个问题是我如何在下面的两个值之间进行插值(零为零并得到一个值。
15232
0
16000
我真的很感激,如果有人可以回答我的任何问题,最好是第一个,所以实际上可以进入第二步lol
非常感谢
答案 0 :(得分:2)
newmat = zeros(size(oldmat,1)+1,size(oldmat,2))
newmat(1:x) = oldmat(1:x)
newmat(x+2:end) = oldmat(x+1:end)
其中oldmat
,newmat
是您的矩阵的旧版本和新版本,x+1
是插入0
的{{1}}行的索引。
然后,假设您想要线性插值,例如:
newmat
我希望自己犯了一些小错误,如果您在修复和推广方面遇到困难,更新您的问题或评论,这就非常具体。
答案 1 :(得分:0)
假设数据存储在名为p
的矩阵中,用于以正确的顺序自动定位新行:
将新行添加到p
的末尾,然后:
p = sortrows(p)
跟进评论,我们有:
newrow = [2130, zeros(1,size(test,2)-1)]
p(size(p,1)+1,:) = newrow
p = sortrows(p)
(如果2130
是新行的第一个值。)
答案 2 :(得分:0)
这可能会对您有所帮助:
% Matrix dimensions
nCols = 10;
nRows = 8;
% Synthetic data
matrix = [ linspace(2000,4250,nRows)' , 2000*rand(nRows,nCols-1)];
matrix([2,4],2:end) = zeros(2,nCols-1); % where some rows are zeros (2 and 4 on this example)
matrix
matrix =
1.0e + 03 *
2.0000 1.7810 1.3674 1.4983 0.7329 1.5439 1.5639 0.2246 0.8653 1.5379 2.3214 0 0 0 0 0 0 0 0 0 2.6429 1.4687 1.4454 1.4801 1.3701 0.7765 0.5881 0.5831 0.2195 0.5459 2.9643 0 0 0 0 0 0 0 0 0 3.2857 0.1458 0.2350 1.4699 1.5787 0.4579 1.0617 1.9288 0.3749 1.3466 3.6071 0.1771 1.2814 1.9412 0.7353 1.2839 0.1830 0.8650 0.5324 0.8591 3.9286 1.5967 0.6576 1.7339 0.4121 0.9690 0.8106 1.3895 1.5957 0.9035 4.2500 1.8860 1.3076 0.1725 0.1733 0.3037 0.2097 1.5162 0.9752 1.2197
如果您只想填充第二列到最后一列的元素为零的行,其中包含前一行和下一行的平均值。
for i=2:nRows-1
if ( sum(matrix(i,2:end))==0 )
matrix(i,2:end) = mean( matrix([i-1,i+1],2:end) );
end
end
matrix
matrix =
1.0e + 03 *
2.0000 1.7810 1.3674 1.4983 0.7329 1.5439 1.5639 0.2246 0.8653 1.5379 2.3214 1.6248 1.4064 1.4892 1.0515 1.1602 1.0760 0.4039 0.5424 1.0419 2.6429 1.4687 1.4454 1.4801 1.3701 0.7765 0.5881 0.5831 0.2195 0.5459 2.9643 0.8072 0.8402 1.4750 1.4744 0.6172 0.8249 1.2560 0.2972 0.9462 3.2857 0.1458 0.2350 1.4699 1.5787 0.4579 1.0617 1.9288 0.3749 1.3466 3.6071 0.1771 1.2814 1.9412 0.7353 1.2839 0.1830 0.8650 0.5324 0.8591 3.9286 1.5967 0.6576 1.7339 0.4121 0.9690 0.8106 1.3895 1.5957 0.9035 4.2500 1.8860 1.3076 0.1725 0.1733 0.3037 0.2097 1.5162 0.9752 1.2197
此代码假定:
我希望它有所帮助。