Hoe visualiseer ik een matrix met weergegeven kleuren en waarden?

Ik wil afbeeldingen als deze maken van een matrix met dubbele precisie met MATLAB.

Voorbeeldafbeelding:
alt-tekst

http://twitpic.com/2xs943


Antwoord 1, autoriteit 100%

Je kunt dit soort plot zelf vrij eenvoudig maken met behulp van de ingebouwde functies imagescen texten het aanpassen van een aantal parameters voor de grafische objecten. Hier is een voorbeeld:

mat = rand(5);           % A 5-by-5 matrix of random values from 0 to 1
imagesc(mat);            % Create a colored plot of the matrix values
colormap(flipud(gray));  % Change the colormap to gray (so higher values are
                         %   black and lower values are white)
textStrings = num2str(mat(:), '%0.2f');       % Create strings from the matrix values
textStrings = strtrim(cellstr(textStrings));  % Remove any space padding
[x, y] = meshgrid(1:5);  % Create x and y coordinates for the strings
hStrings = text(x(:), y(:), textStrings(:), ...  % Plot the strings
                'HorizontalAlignment', 'center');
midValue = mean(get(gca, 'CLim'));  % Get the middle value of the color range
textColors = repmat(mat(:) > midValue, 1, 3);  % Choose white or black for the
                                               %   text color of the strings so
                                               %   they can be easily seen over
                                               %   the background color
set(hStrings, {'Color'}, num2cell(textColors, 2));  % Change the text colors
set(gca, 'XTick', 1:5, ...                             % Change the axes tick marks
         'XTickLabel', {'A', 'B', 'C', 'D', 'E'}, ...  %   and tick labels
         'YTick', 1:5, ...
         'YTickLabel', {'A', 'B', 'C', 'D', 'E'}, ...
         'TickLength', [0 0]);

En hier is het cijfer dat dit genereert:

alt-tekst

Als u problemen ondervindt met de vinklabels op de x-as die u te breed kiest en elkaar overlappen, kunt u dit als volgt aanpakken:

  • Nieuwere versies van MATLAB:ik weet niet zeker welke versie dit is toegevoegd, maar in nieuwere versies hebben axes-objecten nu de properties'{X|Y|Z}TickLabelRotation', waarmee u de labels kunt draaien en ze beter kunt laten passen.

  • Oudere versies van MATLAB:voor oudere versies kun je enkele inzendingen vinden op de MathWorks-bestandsuitwisselingdie de tekst van het vinkje kan draaien, zoals XTICKLABEL_ROTATEvan Brian Katz.


Antwoord 2, autoriteit 20%

h = imagesc(magic(8))
impixelregion(h)

http://www.mathworks.com/help/toolbox/ images/ref/impixelregion.html

Vereist Beeldverwerking Toolbox
alt-tekst


Antwoord 3

Als je alleen geïnteresseerd bent in het kijken naar nul/niet-nul items in je matrix (bijvoorbeeld als deze schaars is), gebruik dan spy.

Gebruik anders imagesc.

PS: ik heb geen toegang tot je afbeelding


Antwoord 4

Ik verwacht dat je Matlab kunt overhalen om dat te tekenen, als je naar de File Exchange kijkt, zie je misschien dat iemand de code al heeft geschreven. Maar als je de code niet hebt, zou het een stuk eenvoudiger zijn om MS Excel te gebruiken.

EDIT:Dus ik heb hier nog even over nagedacht en dit is wat ik bedacht. Ik heb het plaatsen van afbeeldingen op SO nog niet onder de knie, dus geloof me, dit zal je naar een oplossing leiden. Maar het zou echt makkelijker zijn met Excel.

Definieer eerst een matrix met uw gegevenswaarden; Ik noem de matrix Gin het volgende. Voer vervolgens de volgende opdrachten uit:

image(G); 
colormap(gray)

Nu moest ik wat prutsen, de gegevens opnieuw schalen om een ​​goede afbeelding te krijgen, maar dit zou een grijsschaalplot moeten opleveren met numerieke assen. Ga nu naar je figuurvenster en open de plottools.

Selecteer de X-as en druk op de knop Ticks. Het enige wat je nu nog hoeft te doen is de labels aan te passen naar de teksten die je wilt. Doe hetzelfde voor de Y-as. Schrijf de getallen in de vierkanten op de plot — gebruik het tekstvak in het menu Annotaties.

Na veel gehannes heb je de afbeelding die je wilt. Op dit punt stel ik voor dat u de menuopdracht Bestand | . kiest Genereer M-File en doe precies dat. Als je dergelijke afbeeldingen in de toekomst programmatisch wilt maken, verander dan gewoon het gegenereerde M-bestand in een goede functie die doet wat je wilt.

Maar het is nog steeds een stuk eenvoudiger in Excel.

Other episodes