簡體   English   中英

在Matlab中繪制點行

[英]Plotting rows of points in Matlab

因此,我仍然習慣於Matlab,並且在繪制時遇到了一些麻煩。 我有一個單元格,其中每行包含一個點列表。 我想在同一張圖表上以不同的顏色繪制點的每一行,以便可以對其進行比較。 問題是,我需要針對未知數量的點和行進行此工作(即,每次運行程序時,點和行的數量可以更改)。

因此,例如,我可能擁有單元格數組A:

A = {[0,0],[1,2],[3,4]; [0,0] [5,6],[9,2]}

我想針對它們的索引繪制第1行中的點(因此是3D圖形),然后在同一圖形上使第2行中的點具有不同的顏色。 行將始終具有相同的長度。 (每行將始終具有相同數量的點)。 我已經嘗試了一些不同的for循環,但似乎無法正確解決這個問題。

向我發送正確方向的任何幫助將不勝感激!

您可以將其轉換為矩陣並直接繪制:

% Some dummy data - format a little different from your example 
% to allow for different numbers of elements per row
A = {[0,0, 1,2, 3,4]; [0,0, 5,6]};

% Figure out how many columns we need in total
maxLen = max(cellfun(@length, A));
% Preallocate
Amat = NaN(size(A, 1), maxLen);
% Copy data
for n = 1:size(A, 1)
    curA = A{n}; 
    Amat(n, 1:length(curA)) = curA; 
end

% Generate 1:N vector repeated the correct number of times (rows)
x = repmat(1:size(Amat, 2), size(Amat, 1), 1);
plot(x, Amat)

編輯:您在帖子的某個位置提到了3D圖形。 上面的內容不會繪制3D圖形,因此可以:

% Generate Amat as above

% Then:
[X, Y] = meshgrid(1:size(Amat, 1), 1:size(Amat, 2));
surf(X, Y, Amat.'); % OR: plot3(X, Y, Amat.');

我不確定這正是您想要的,但是對於您想要從中得到哪種圖形的問題,您的問題仍然不清楚。 如果只想在繪圖上使用彩色線條,則可以使用plot3而不是surf ,但是IMHO surf可能會為您提供此類數據的更清晰繪圖。

點和行的數量隨每次迭代而改變的事實應該不會造成太大的問題。 我建議在繪圖循環之前使用size函數(size(A,1)和size(A,2))以獲取矩陣的尺寸。

有了矩陣的大小后,遍歷尺寸並使用holdon在同一圖上繪制線,最后在遍歷時僅使線顏色成為尺寸的函數,以便始終具有不同的線色

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM