2017-07-04 6 views
1

Dies ist, was wie jetzt mein Code siehtinterp2 Verwenden Anzahl der Punkte kleiner zu machen

b=load('filenamehere'); 
b=b(46:285,51:170); 

x=1:size(b,1); 
y=1:size(b,2); 

xq=1:size(b,1)/4; 
yq=1:size(b,2)/4; 

B=interp2(x,y,b,xq,yq); 

b ist 240x120-Matrix, und ich versuche, es zu haben, eine 60x30-Matrix sein, so dass der Computer das umgehen kann spätere Berechnungen muss ich machen. nicht sicher, was ich tun muss, damit es funktioniert, ich habe auch versucht, [X,Y]=meshgrid(x,y) und das gleiche für xq, yq. jede Hilfe wird geschätzt.

Antwort

0

Ich sehe mehrere Probleme in Ihrem Code.

b=load('filenamehere'); 

wird eine Struktur zurückgeben, anstatt eine Matrix. Lassen Sie uns das jetzt ignorieren und annehmen, dass Sie die Matrix b mit 240x120 Größe haben.

Ihre xq und yq nehmen Sie die erste 1/4 b. Ich nehme an, Sie möchten einen Punkt von jedem vierten nehmen. Wenn ja, können Sie

B = b(1:4:end, 1:4:end); 

tun oder Downsample verwenden, wenn Sie Signal Toolbox Verarbeitung:

B = downsample(b, 4); 

Wenn Sie wirklich Interpolation benötigen, xq und yq, wenn sie Vektor sind, sollten andere haben Orientierungen:

B = interp2(b, 1:4:120, (1:4:240).'); 
+0

Ich sehe, was Sie sagten, ich benutze "filenahere" als Platzhalter, es ist eigentlich eine .mfm-Datei; das B = interp2 (b, 1: 4: 120, (1: 4: 240). '); hat funktioniert. Danke, kannst du erklären, was es macht und was meinst du? – TRecht

+0

Das dauert nur einen Punkt alle 4 Punkte. Mach dir das gut für dich. Das interp2 wird jedoch etwas glätten. Wählen Sie, was am besten zu Ihnen passt. –

Verwandte Themen