2012-01-03 7 views
0

行列を与えられたMatlabコードを書こうとしていますが、いくつかの規則に従って3つの行列が出力されます。私はこれを動作させることが困難です - 私は行列としてベクトルを出力することはできません。エラーメッセージが表示されます。いくつかの行列を出力するMatlabコード

???代入A(I)= Bでは、BとI の要素の数は同じでなければなりません。

どうすればよいですか?

+0

「を私たち(の関連部分に)コードをお見せください。既に持っている – BioGeek

答えて

4

あなたは

function [A B C] = myFunction(X) 
    A = X; 
    B = 2 * X; 
    C = 3 * X; 
end 

を書いて、あなただけの

a = myFunction(ones(2)) 

または

でそれを呼び出し、出力のすべてを望んでいないだろう場合

[a b c] = myFunction(ones(2)) 

でそれを呼び出すことができます

[a b] = myFunction(ones(2)) 

は、最初の引数だけを取得するか、最初の2つの引数だけを取得します。

+0

ありがとう。行列の出力数が最大3になるようにこれを適合させることは可能ですか? –

+0

はい(私の編集を参照) –

+0

ありがとうございます。私はより具体的にすべきであることを認識しています。時にはmyFunctionは1つの行列を出力し、時には2つと時々は3つ(入力行列に依存します)を出力します。私は、私が書いている別の関数の中でmyFunctionを呼び出し、MyFunctionが出力する行列を使用したいと思います。私はmyFunctionがどれくらい多くの引数を与えようとしているかを事前に知っていません。どうすればこれを回すことができますか? –

0

関数宣言:

function [A, B, C] = something (Input_mat) 
%Do whatever needs to be done here, for example: 
A= Input_mat; 
B= Input_mat'; 
C= ones(18); 

そして、あなたが使用してそれを呼び出すとき:

[A,B,C] = something (Some_mat) 

A、B、Cが満たされています。

1

また、細胞を使用することができます:あなたの行列はすべてあなたもそれらを連結することができ、同じサイズがある場合

A=cell(1,3); %% or A=cell(1,2); if you want to output only 2 matrices 
A{1}=B; 
A{2}=C; 
A{3}=D; 

は:

A=zeros(m,n,3); 
A(:,:,1)=B; 
A(:,:,2)=C; 
A(:,:,3)=D; 
関連する問題