Filter löschen
Filter löschen

コマンドウィンドウに​収まらない長い文字列​を取得する方法

7 Ansichten (letzte 30 Tage)
Daisuke
Daisuke am 23 Mär. 2020
Kommentiert: Daisuke am 27 Mär. 2020
コマンドウィンドウに収まらない長い文字列を取得する方法を知りたいです。
複雑な連立方程式を解いた計算結果の文字列がとても長くなりコマンドウィンドウに収まりません。
全てをコマンドウィンドウに表示するなど、計算結果の文字列を取得する方法はありますか?
計算結果をsimulink内のmatlab fcnで使うためにsave関数やload関数を試みたのですが、計算結果内で用いる変数を毎回宣言するためかシミュレーションにとても時間がかかってしまいます。
計算結果の文字列をmatlab fcn内で直接用いたいと考えています。
以下は例です。
例では簡単のため、計算結果をtest1,2,3として表示できる形にしています。
clear
format short
syms a b c d e f g h
%計算結果代用
%実際はコマンドウィンドウに収まらない長さです。
test1 = a+b+c+d;
test2 = e*f*g;
test3 = h^2-a*b;
%fun_loadtest(x)への入力
u = [1
1]
x0=[1
1
1]
x1=[1
1
1]
save('load_test.mat','test1','test2','test3')
matlab fcn内は以下のようになります。
この関数ですと計算に時間がかかります。
function y = fun_loadtest(x)
format short
%test1,2,3の呼び出し
load('load_test.mat')
%ここからが処理を重くしている?
syms a b c d e f g h
a = x(1) ;
b = x(2) ;
c = x(3) ;
d = x(4) ;
e = x(5) ;
f = x(6) ;
g = x(7) ;
h = x(8) ;
%呼び出したtest1,2,3にx(1),...を代入した結果
x = [subs(test1)
subs(test2)
subs(test3)] ;
%出力
y = double(x);
上の関数を以下のようにすると計算時間が短くなります。
function y = fun_loadtest(x)
format short
test1 = x(1)+x(2)+x(3)+x(4);
test2 = x(5)*x(6)*x(7);
test3 = x(8)^2-x(1)*x(2);
x = [test1
test2
test3] ;
y = double(x);
入力を直接x(1),x(2),...として使いたいのですが、長い文字列ですとその全容が分からず、変えることができない状態です。
助言いただければ幸いです。

Akzeptierte Antwort

Etsuo Maeda
Etsuo Maeda am 24 Mär. 2020
を使って、シンボリック式を関数ハンドルか関数ファイルに変換してしまえばいいと思いますが。。。
HTH
  1 Kommentar
Daisuke
Daisuke am 27 Mär. 2020
回答ありがとうございます!試してみます!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!