- Subject: Re: Aiuto Matlab
- From: Andrea
- Data: Wed, 08 Oct 2008 21:16:09 +0200
- Newsgroups: it.discussioni.ingegneria
leonardo.magistro@gmail.com ha scritto:
> On 8 Ott, 00:09, Andrea <andrea@biomed> wrote:
>> leonardo.magis...@gmail.com ha scritto:
>>
>>
>>
>>> Salve,
>>> qualcuno mi può aiutare con un problema su Matlab?
>>> Ho disegnato la mappa dell'italia con la funzione
>>> lat_limit = [34 48];
>>> lon_limit = [4.5 20.5];
>>> worldmap(lat_limit, lon_limit);
>>> adesso vorrei disegnarci sopra una spezzata. Ho trovato la funzione
>>> geoshow(lat, lon). Vorrei sapere se qualcuno sa come posso colorare
>>> questa linea in funzione di alcuni valori che stabilisco per ciascun
>>> punto della linea. Mi spiego meglio: se al primo punto assegno un
>>> valore alto la linea deve comincirae col rosso per poi cambiare colore
>>> verso le tinte celesti verso i punti cui assegno valori più bassi (in
>>> accordo alla colormap di default).
>>> E' possibile impostare opportuni parametri alla funzione geoshow?
>>> Oppure occorre utilizzare un'altra funzione?
>>> Grazie.
>> Copio e incollo dalla guida in linea di geoshow
>>
>> % Display the EGM96 geoid heights.
>>
>> % Create a figure with an Eckert projection.
>> figure
>> axesm eckert4; framem; gridm;
>> axis off
>>
>> % Display the geoid as a texture map.
>> load geoid
>> h=geoshow(geoid, geoidrefvec, 'DisplayType','texturemap');
>>
>> % Set the Z data to the geoid height values, rather than a
>> % surface with zero elevation.
>> set(h,'ZData',geoid);
>> light; material(0.6*[ 1 1 1]);
>>
>> % Create a colorbar and title.
>> set(gca,'dataaspectratio',[ 1 1 200]);
>> hcb = colorbar('horiz');
>> set(get(hcb,'Xlabel'),'String','EGM96 geoid heights in m.')
>>
>> % Mask out all the land.
>> geoshow('landareas.shp', 'FaceColor', 'black');
>> zdatam(handlem('patch'), max(geoid(:)));
>>
>> Quindi quello che ti serve è solo definire i valori di altezza in geoid,
>> mettendo a una costante bassa (o forse anche NaN) tutto ciò che non
>> appartiene alla spezzata. Le ampiezze relative alle coordinate della
>> spezzata saranno i valori reali di ampiezza.
>>
>> Se la colormap in uso non ti va bene, o usi una map diversa (hot, cold,
>> grey, hsv, etc), o usi colormap editor, oppure te la modifichi a mano (è
>> una matrice Nx3 in rgb )
>>
>> Perdonami se c'è qualche imprecisione ma sono al collasso mentale.
>>
>> Saluti, Andrea.
>
> Innanzitutto grazie per l'attenzione e per la risposta!
> Ho, però, qualche difficoltà nell'applicare i consigli che mi dai e
> per questo approfitto ancora della tua gentilezza.
>
> Ti posto parte del codice che ho già scritto:
>
> lat_limit = [34 48];
> lon_limit = [4.5 20.5];
>
> h = worldmap(lat_limit, lon_limit);
> set(1, 'Units', 'normalized', 'Position', [0 0 1 1]);
> hTitle = get(h,'Title');
> h3 = xlabel('Longitude [°]');
> h4 = ylabel('Latitude [°]');
>
> percorso = [45.6306 8.7281 120 ;
> 45.679750 8.690766 533.4;
> 45.718092 8.645112 914.4;
> 45.789492 8.738461 1219.2;
> 45.722862 8.869094 1524;
> 45.496611 8.931896 2500;
> 44.964444 8.970278 4500;
> 44.9644 8.9703 6000;
> 44.4244 9.0821 6000];
>
> upLimit = max(percorso (:,3));
> geoshow(percorso (:,1), percorso (:,2), 'LineWidth',3 );
>
>
> cb = colorbar;
> set(cb,'YLim', [0 upLimit]);
> imagesc(cb, [0 upLimit]);
> cb = colorbar;
> set(cb,'XColor','white','YColor','white');
>
>
> Come potrai vedere questo codice traccia una spezzata di colore nero.
> Io vorrei che i colori sulla spezzata fossero assegnati in accordo ai
> valori di altitudine
> dei punti indicati nella terza colonna della matrice percorso ed in
> relazione, ovviamente, alla colorbar visualizzata.
>
> Ti ringrazio,
> Leonardo
Quasi risolto, ti rispondo in privato.
Ciao, Andrea.
| Cerca "Re: Aiuto Matlab" con Gooogle SiteSearch |
|