2016-06-14 7 views
0

オクターブを初めて使用しました。このコードを書きました。しかし、最初の行のfprintfステートメントは印刷されません。誰かが私はオクターブコードが実行されないのはなぜですか?エラーは表示されません。

C = strassen(zeros(1024, 1024), zeros(1024, 1024) 

を入力した。しかし、何も印刷されていないと単語

助けてください

オクターブ2:>コマンド

function [C] = strassen(A, B) 
fprintf('strassen called\n'); 

row = size(A, 1);%Incase zeros must be padded to make dimensions even 
column = size(B, 2); 
common = size(A, 2); 

if row*common*column <= 1000000,%Base case when less than 10^6 multiplications needed 
    C = zeros(row, column); 
    for x = 1 : row, 
     for y = 1 : column, 
      for z = 1 : common, 
       C(x, y) += A(x, z)*B(z, y); 
      end; 
     end; 
    end; 
else 
    %Padding zeros if needed 
    if rem(row, 2) == 1, 
     A = [A; zeros(1, common)]; 
    end; 
    if rem(column, 2) == 1, 
     B = [B zeros(common, 1)]; 
    end; 
    if rem(common, 2) == 1, 
     A = [A zeros(size(A, 1), 1)]; 
     B = [B; zeros(1, size(B, 2))]; 
    end; 

    m = size(A, 1); 
    n = size(A, 2); 
    o = size(B, 2); 

    A11 = A(1:m/2, 1:n/2); 
    A12 = A(1:m/2, n/2+1: n); 
    A21 = A(m/2+1 :m, 1:n/2); 
    A22 = A(m/2+1 :m ,n/2+1: n); 

    B11 = A(1:n/2, 1:o/2); 
    B12 = A(1:n/2, o/2+1: o); 
    B21 = A(n/2+1 :n, 1:o/2); 
    B22 = A(n/2+1 :n, o/2+1: o); 

    M1 = strassen(A11 + A22, B11 + B22); 
    M2 = strassen(A21 + A22, B11); 
    M3 = strassen(A11, B12 - B22); 
    M4 = strassen(A22, B21 - B11); 
    M5 = strassen(A11 + A12, B22); 
    M6 = strassen(A21 - A11, B11 + B12); 
    M7 = strassen(A12 - A22, B21 + B22); 

    %C11 = M1 + M4 - M5 + M7; 
    %C12 = M3 + M5; 
    %C21 = M2 + M4; 
    %C22 = M1 + M3 - M2 + M6; 
    %C = [C11 C12; C21 C22]; 
    %C = C(1:row, 1:column); 
    C = [(M1 + M4 - M5 + M7) (M3 + M5);(M2 + M4) (M1 + M3 - M2 + M6)](1:row, 1:column); 
    end; 
end;  
+1

括弧を閉じなかったためです。余分な ')'が必要です – Dan

答えて

0
を与えた後の次の行に表示されません

Danが言ったように、あなたの電話には「)」がありません。しかし、これはコピー&の貼り付けエラーである可能性があります。使用する場合

C = strassen(zeros(1024, 1024), zeros(1024, 1024)); 

計算に時間がかかるため、「strassen called」と表示されません。私はそれが終わるまで待っていないし、30代後に中止した。

... 
fprintf('strassen called\n'); 
fflush (stdout); 
... 

more offとページャを無効にする:あなたは再帰呼び出しを見たい場合は、標準出力をフラッシュすることができます。この場合、表示されます

>> C = strassen(zeros(1024, 1024), zeros(1024, 1024)); 
strassen called 
strassen called 
strassen called 
strassen called 
strassen called 

私はあなたが期待していると思います。

関連する問題