簡體   English   中英

在Matlab中繪制二維矩陣子集的表面

[英]Plotting surface of a subset of 2d matrix in matlab

我有這個功能來繪制帶有沖浪的二維矩陣。 允許用戶指定矩陣的子集。

function surf_sub(file,row,col1,col2)
% Plot submatrix read in from a file
% number of rows/columns can be specified

    m=dlmread(file,','); 
    if nargin < 3
        n=m(1:row,:);
        figure;
        surf(1:row,:,n);
    else
        n=m(1:row,col1:col2);
        figure;
        surf(1:row,col1:col2,n)
    end


end

列數未知。 因此,如果未指定列的范圍,那么我想繪制所有列。 顯然,不允許使用“:”代表所有列,因此出現以下錯誤。 正確的做法是什么?

在編譯時,“ surf”被確定為變量,並且該變量未初始化。 “ surf”也是函數名稱,MATLAB的早期版本將其稱為函數。 但是,MATLAB 7禁止在相同的上下文中使用與函數和變量相同的名稱。

surf_sub(第9行)中的錯誤surf(1:row,:,n);

我不明白為什么您要堅持輸入col1col2 ,而不只是一個變量而不是cols ,而是其他。 根據您的問題:

function surf_sub(file,row,col1,col2)

m=dlmread(file,','); 
if nargin < 3
    n=m(1:row,:);
    figure;
    surf(n(1:row,:));
else
    figure;
    surf(n(1:row,col1:col2))
end

應該做。

如果必須這樣做,我只會寫:

surf(n(rows,cols));

輸入諸如rows=1:30cols=1:size(n,1)等...

暫無
暫無

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

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