0

2 つの行列があり、次元は 1440 行 x 241 列です。最初の行列は各セルにその面積を入力し、2 番目の行列には 0 ~ 871 の値が含まれます。これらのセルはグループ化され、値 1 ~ 871 は異なるグループを表します。つまり、10 個の隣接セルで構成されるグループ 1、20 個の隣接セルで構成されるグループ 2、等

871 行 x 1 列の 3 番目のマトリックスを作成します。これは、2 番目のマトリックスからのセルの各グループの面積をリストし、最初のマトリックスから関連するセルを合計して計算された面積を示します。

関数を実行しようとしましたが、このエラーが発生し続けます:

clear all 
clear
load Clusters_28Aug.mat;  
AR = A>0; 
U = Cluster_Area(AR) 

Cluster_Area のエラー (13 行目) i = 1; 出力引数 "Clus_Area" (およびおそらくその他) への呼び出し中に割り当てられませんでした。

関数内で変数が割り当てられていると思いました。どうすればこれを修正できますか?

これが私のコードです:

function Clus_Area = Cluster_Area(AR)
% Summer 2013 Project
%
% Purpose:  To determine the area of each cluster, by adding up the individual areas of each cell within a cluster.
%  Input
%  AR(i,j) = clusters ID'd, on a 1440 x 241 matrix
%
% Output
% Clus_Area(i,j) = area of each cluster, single column vector, indexed by cluster #

i = 1;
j = 1;

for i = 1:1440;  %For all longitudes        
    for j = 1:120;  %For 30S to Equator, convert 0.25 deg lon to km, varies by latitude         
        if AR > 0;              
            b_1 = (111.41288*cosd(abs((0.25*(j+239))-90)))-(0.0935*cosd(abs(3*((0.25*(j+239))-90))))+(0.00012*cosd(abs(5*((0.25*(j+239))-90))));
            b_2 = (111.41288*cosd(abs((0.25*(j+240))-90)))-(0.0935*cosd(abs(3*((0.25*(j+240))-90))))+(0.00012*cosd(abs(5*((0.25*(j+240))-90))));

            %Use area formula for trapezoid A = 1/2 h (b_1+b_2), where h = 27.8km
            Area_cell = (((0.5)*27.8*1000)*((b_1+b_2)*1000));  %Ans converted to m^2

            %Add up cell areas to get cluster area
            Clus_Area(i,j) = sum(Area_cell);
            disp('Clus_Area')
            %Populate Grid_LAT_LON with area of each cell
            %Grid_LAT_LON(i,j) = Area_cell;         
        end      
    end     

    for j = 121:241;  %For Equator to 30N, convert 0.25 deg lon to km, varies by latitude
        if AR > 0;          
            b_1 = (111.41288*cosd(((0.25*(j+239))-90)))-(0.0935*cosd((3*((0.25*(j+239))-90))))+(0.00012*cosd((5*((0.25*(j+239))-90))));
            b_2 = (111.41288*cosd(((0.25*(j+240))-90)))-(0.0935*cosd((3*((0.25*(j+240))-90))))+(0.00012*cosd((5*((0.25*(j+240))-90))));

            %Use area formula for trapezoid A = 1/2 h (b_1+b_2), where h = 27.8km
            Area_cell = (((0.5)*27.8*1000)*((b_1+b_2)*1000));  %Ans converted to m^2            
            %Add up cell areas to get cluster area
            Clus_Area(i,j) = sum(Area_cell);
            disp('Clus_Area')
            %Populate Grid_LAT_LON with area of each cell
            %Grid_LAT_LON(i,j) = Area_cell;         
        end                       
    end     
end
Z = Clus_Area(i,j);
end
4

1 に答える 1

0

言いたいんじゃないの

if AR(i,j)>0

式の結果が配列になる場合のifステートメントのセマンティクスはわかりませんが、式のすべての要素がtrueである必要があると思います。

于 2013-07-31T22:42:11.007 に答える